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

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

8
$ *と$ @の違いは何ですか?
次のコードを検討してください。 foo () { echo $* } bar () { echo $@ } foo 1 2 3 4 bar 1 2 3 4 以下を出力します: 1 2 3 4 1 2 3 4 私はKsh88を使用していますが、他の一般的なシェルにも興味があります。特定のシェルの特殊性を知っている場合は、言及してください。 SolarisのKshのマニュアルページで次のことがわかりました。 $ *と$ @の意味は、引用符で囲まれていない場合、またはパラメーター割り当て値またはファイル名として使用されている場合は同じです。ただし、コマンド引数として使用する場合、$ *は `` $ 1d $ 2d ... ''と同等です。dはIFS変数の最初の文字で、$ @は$ 1 $ 2 ...と同等です。 …
73 shell  quoting  ksh  arguments 


5
シェルで引用符をエスケープする方法は?
bashで文字をエスケープするのに問題があります。別のユーザーでコマンドを実行しているときに、一重引用符と二重引用符をエスケープしたいと思います。この質問の目的のために、画面に以下をエコーし​​たいとしましょう。 'single quote phrase' "double quote phrase" 別のユーザーに切り替える必要がある場合、すべての特殊文字をエスケープするにはどうすればよいですか: sudo su USER -c "echo \"'single quote phrase' \"double quote phrase\"\"" もちろん、これは正しい結果を生み出しません。



5
sudoを使用したリダイレクトまたはパイピングを含むコマンドの実行方法
ルートアカウントの代わりにsudoを使用するのがベストプラクティスであると想定しているものに従うようにしています。 次のような単純な連結ファイル操作を実行しています。 sudo echo 'clock_hctosys="YES"' >> /etc/conf.d/hwclock これは、通常のユーザーとして実行されている「>>」の右側に関しては失敗します。余分なsudoの追加も失敗します(ファイルではなくsudoコマンドにパイプするため、予期される動作)。 例はそれだけですが、ルートアカウントで検証およびテストされています。

5
シェル変数を/ pattern /としてawkに渡す
私のシェル関数の1つに次のものがある: function _process () { awk -v l="$line" ' BEGIN {p=0} /'"$1"'/ {p=1} END{ if(p) print l >> "outfile.txt" } ' } として呼び出されると_process $arg、として$arg渡され$1、検索パターンとして使用されます。$1awkパターンの代わりにシェルが展開するため、このように動作します!またl、awkプログラム内で使用することができますを使用して宣言されています-v l="$line"。大丈夫だ。 同じ方法で変数として検索するパターンを与えることは可能ですか? 以下は機能しませんが、 awk -v l="$line" -v search="$pattern" ' BEGIN {p=0} /search/ {p=1} END{ if(p) print l >> "outfile.txt" } ' awkが/search/変数として解釈するのではなく、文字通り解釈するため。
59 shell  awk  quoting  variable 

4
列を使用して、スペースではなくタブで区切るにはどうすればよいですか?
Unix columnコマンドを使用してテキストをフォーマットしたいと思います。タブで区切られたフィールドがありますが、各フィールド内にはスペースもあります。column空白(タブとスペース)で区切ります。区切り文字としてタブのみを使用する列を作成するにはどうすればよいですか? 私はタブを区切り文字として指定しようとしました: cat myfile | column -t -s"\t"

1
「…」、「…」、「$」…、および「$」…引用符の違いは何ですか?
時々私はスクリプトがいくつかのテキストを引用し、これらのさまざまな方法のすべてを使用して参照してください"..."、'...'、$'...'、と$"..."。なぜ非常に多くの種類の引用が使用されているのですか? それらは異なる振る舞いをしたり、それらの中で私ができることに影響を与えますか?

4
バイトをファイルにエコーする
i2cバスを使用して、rasberry Piをディスプレイに接続しようとしています。はじめに、特にバイトをファイルに手動で書き込みたいと思いました。 特定のバイトをファイルにどのように書き込みますか? 私はすでにそれを読んでいて、私の問題はこのようなもので解決されるべきだと考えました echo -n -e \x66\x6f\x6f > byteFileForNow ただし、fooではなくnanoでそのファイルを開くと、次のように表示されます。 x66x6fx6f そのため、バックスラッシュはエスケープされましたが、バイト自体はエスケープされませんでした。また、今回は-eなしでのみ同じことを試みたので、\ x66 \ x6f \ x6fを表示することを期待していましたが、以前と同じになりました。 そのため、エコーはバックスラッシュ、バックスラッシュのみ、バックスラッシュをエスケープすることになっています。 これを修正する方法はありますか? 私が探していることを行うべきだったマニュアルページによると。

2
コマンドラインで括弧はどのように解釈されますか?
設定方法を読んでいるgrubと、次の2つの構文のいずれかを使用する必要があると主張する記事に出会いました。 echo \(hd0,0\) >> /boot/grub/grub.conf または echo '(hd0,0)' >> /boot/grub/grub.conf なぜなら、コマンドラインでは、かっこが特別な方法で解釈されるためです。括弧の特別な点は何ですか?それらはどのように解釈されますか?
45 bash  shell  quoting 

7
シェルの二重引用符と単一引用符のニーモニックは何ですか?
二重引用符または一重引用符でUnix変数が置換されるかどうかを調べることなく、覚えるのに十分なスクリプトを実行しません。 私は何が起こっているのかを明確に理解しています。私の質問は、誰かが正しい引用ルールを頭の中に固執させるための記憶の秘 haveを持っているのですか?

4
ヒアドキュメントに「$」を印刷する方法
bashのhere-docで「$」をエコーするにはどうすればよいですか? たとえば、のようなリモートサーバー上のコンテンツを含むファイルが必要です$ABC=home_dir。 $ ssh hostname sudo -s <<EOF echo "$ABC=home_dir" > file EOF ただし、変数として扱われます。リテラルを印刷するにはどうすればよい$ですか?
42 bash  shell  quoting 


5
変数に保存されたコマンドを実行するにはどうすればよいですか?
$ ls -l /tmp/test/my\ dir/ total 0 上記のコマンドを実行する次の方法が失敗または成功する理由を疑問に思っていましたか? $ abc='ls -l "/tmp/test/my dir"' $ $abc ls: cannot access '"/tmp/test/my': No such file or directory ls: cannot access 'dir"': No such file or directory $ "$abc" bash: ls -l "/tmp/test/my dir": No such file or directory $ bash -c $abc 'my …
35 bash  shell  quoting  variable 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.