- ベストアンサー
簡単なシェルスクリプトを見てください。
次のようなシェルスクリプトを作成しました。 #!/bin/sh echo [$1] awk '/"0312345678"/ {print}' /test > /test1 awk '/$1/ {print}' /test > /test2 のように簡単なスクリプトです。 $ sample \"0312345678\" で実行させたら、echo では"0312345678"に出力されます。 しかし、test1にはちゃんと結果が入っていますが、test2は空のファイルです。 なぜ、結果が違うのですか? 実行時、引数を渡す方法で、test1と同じ結果を得たければ、どうすればいいのですか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
シングルクォーテーション(')に囲まれているシェル変数は展開されません。 No.1の方が書かれたダブルクォーテーション(")で囲む以外にも、シングルクォーテーション(')で囲まれていなければ展開されるわけですからシングルクォーテーション(')の囲みから一時的に外せばいいです。 awk '/'$1'/ {print}' /test > /test2
その他の回答 (1)
- grape16
- ベストアンサー率55% (52/93)
回答No.1
「'」で囲うと$1等の展開は行われません。展開させたいときは「"」で囲うようにします。 次のように修正すればちゃんと動作しますよ。 awk "/$1/ {print}" /test > /test2
お礼
ありがとうございました。