タグ付けされた質問 「quoting」

文字列は通常、引用符で区切られているため、引用符を含む文字列を処理する際に問題が発生します。

2
--text =“ $ @”が最初の単語のみを渡すのはなぜですか?
私のようないくつかの引数を指定して、次のスクリプトを実行するとarg1 arg2 arg3: #!/bin/bash zenity --entry --text="$@" zenityは、「arg1」というテキストで入力ダイアログを作成しますが、「arg1 arg2 arg3」が必要です。 次のスクリプトのような変数を使用すると、エントリテキストのすべての引数が表示されます。 #!/bin/bash text="$@" zenity --entry --text="$text" これらのスクリプトの違いは何ですか?なぜ最初のもの$@は最初の引数だけで置き換えられるのですか?
9 bash  shell  quoting 

1
bashの引用符内のドル記号補間
私が書いたこの小さなテストスクリプトを実行しています。 #!/bin/bash TESTCASE=$@ testHarness <<runTest $TESTCASE runTest コマンドラインから: ./test.sh "1092$212" しかし、ドル記号は取り除かれています。私がそれをエスケープした場合、それは機能します。しかし、二重引用符でこれを行う必要から私を保護すると思いました。誰かが私に何が起こっているのか、そしてこれを修正する方法を理解するのを助けてくれますか?
9 bash  shell  quoting 

3
複数のファイルに対するImageMagick
convert以下のコマンドを使用して、ImageMagickで単一のファイルをBMPからPNGに変換しました convert CD\ Front.bmp CD\ Front.png 私はそのようなファイルをたくさん持っているので、試してみました: for f in */*.bmp ; do convert $f ${f%bmp}png; done しかし、このコマンドは永久にハングします。 何が悪いのですか?

3
シェル全体のバックスラッシュの処理
どのようにechoしてprintf御馳走バックスラッシュでzsh、bashおよび他のシェル? 下ではzshの私は、次の動作を取得します: $ echo "foo\bar\baz" foaaz $ echo "foo\\bar\\baz" foaaz $ echo 'foo\bar\baz' foaaz $ echo 'foo\\bar\\baz' foo\bar\baz 下ではbashの、物事はもう少し一貫性のあるように見えます。 bash$ echo "foo\bar\baz" foo\bar\baz bash$ echo 'foo\bar\baz' foo\bar\baz bash$ しかし、もっと具体的に:どのように私は、次のようなバックスラッシュを含む文字列渡すことができ\\foo\bar\somethingました: echo printf print まったく同じ文字列を取得しますか?(zshとbash)? 次に、zshの関数の別の実験を示します。 function foo { echo -E '$1' } $ foo \\here\is\some\path $1 どうすれば印刷するだけ\\here\is\some\pathですか? 更新(注:これは現在、Stephaneのコメントで回答されています) 私はzsh 5.0.2で以下を試しました: function …
9 bash  shell  zsh  quoting 

5
**で始まる行を見つける方法
ファイル内の行がで始まるかどうかを確認する必要があります**。 *シェルによってワイルドカードとして解釈されるため、その方法を理解できません。 grep -i "^2" test.out 行が2で始まる場合に機能しますが、 grep -i "^**" test.out 明らかに動作しません。 (この行がaで終わるかどうかも知る必要)がありますが、まだ試みていません)。

1
引用符付きのbashスクリプト解析引数
testという名前のこの単純なスクリプトを検討してください。 #!/bin/bash echo $1 次のコマンドと呼び出し: $ echo "A B" A B $ echo ""A B"" A B $ echo """A B""" A B $ echo """A B""" A B $ ./test "A B" A B $ ./test ""A B"" A $ ./test """A B""" A B $ ./test """"A B"""" …

2
grepでグループ区切りとしてmultilineを使用するにはどうすればよいですか?
では、グループマッチの間に何かを書くgrepために使用できます--group-separator。 これは、特に-C Xコンテキスト行を取得するオプションを使用する場合に、どのブロックがあるかを明確にするのに便利です。 $ cat a hello this is me and this is something else hello hello bye i am done $ grep -C1 --group-separator="+++++++++" 'hello' a hello this is me +++++++++ something else hello hello bye 空行をgrepのコンテキスト「グループセパレーター」として使用する方法で、空行を作成する方法を学びました--group-separator=""。 ただし、2つの空の行が必要な場合はどうなりますか?私は言っ--group-separator="\n\n"てみましたが、リテラル\ns を取得します: $ grep -C1 --group-separator="\n\n" 'hello' a hello this is me …
8 shell  grep  quoting 

4
スペースがあるgrep出力でxargs grepを実行するにはどうすればよいですか?
正規表現に基づいてファイルを検索してから、それらのファイルのコンテンツを検索しようとしています。たとえば、私は次のようなものを持っています #Find all C++ files that match a certain pattern and then search them find . -name "*.cpp" | grep "<name regex>" | xargs grep "<content regex>" 私が遭遇している問題は、いくつかのパスにスペースが含まれていることですxargs。だけを使用している場合はfind、-print0引数を(-0引数on と共にxargs)使用して、xargsがスペースを区切り文字として扱わないようにすることができます。同様のものはありgrepますか? それとも、この問題に完全に間違った方法で取り組んでいますか?単純に、findto は私grepにxargs grepは理にかなっていますが、同じ結果が得られる他のアプローチを受け入れます。
8 shell  grep  find  quoting  xargs 

3
|の使用 $ variableからのパイプ文字は、それをbashの別の引数として扱います。それを脱出する方法?
私はこのようなbashスクリプトを持っています export pipedargument="| sort -n" ls $pipedargument しかし、それはエラーを与えます ls: |: No such file or directory ls: sort: No such file or directory に"| sort -n"渡された引数としての内容を扱っているようlsです。 通常のパイプコマンドとして扱われるように、どうすればエスケープできますか? 条件付きでを設定しようとしています$pipedargument。私はコマンドの異なるバージョンを条件付きで実行することができると思いますが、これを上記のように機能させる方法があるかどうか疑問に思いますか?

2
Bashカラー出力が失敗する
セッドまたはエコーの問題ですか?私は何を間違っていますか? $> cat ~/bin/color_test.sh #!/bin/bash ColorOff='\e[0m' # Text Reset BWhite='\e[1;37m' # Bold White string="test TEST test" echo -e "$string" | sed -e "s/TEST/${BWhite}TEST${ColorOff}/g" $> ~/bin/color_test.sh test e[1;37mTESTe[0m test 太字で強調表示されたTESTが期待されたものです。
8 bash  sed  quoting 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.