
シェルスクリプトで、空白(スペース)を含む変数をawkに渡したいのですが、どうしたらいいでしょうか?
例えば、以下のようなtest.shというファイルを作ったとします。
---------------
#!/bin/sh
AAA="x y"
echo "" | awk '{print $AAA}'
--------------
としたとき、$AAAが正常に出力できません。(なお、echo "" は、awkを走らせる為の単なるダミーです。)
printの部分を
・awk '{print '$AAA'}'
・awk '{print "'$AAA'"}'
などともしてみましたが、ダメでした。どのようにすればうまくいくでしょうか?
No.3ベストアンサー
- 回答日時:
この場合、$AAAを展開するのは、awkではなく/bin/shです。
shで$AAAを展開して echo "" | awk '{print "x y"}'
の形にして実行します。
更に詳しく言えば
awkの引数が
{print "x y"}
という文字列になるようにします。
(awkにx yが一つの文字列として認識されるように""で括った状態に)
シングルクオートで括ってあるのは、sh側の都合で、awkにわシングルクオートは渡されません。
例えば
echo '' | awk "{print \"${AAA}\"}"
( "の中の"はバックスラッシュでエスケープ )
echo '' | awk '{print "'"${AAA}"`"}'
( 展開の必要の無い箇所はシングルクオートで。
展開する${AAA}の直前でシングルクオートを一旦閉じて
展開が終ったら、またシングルクオートで
)
ただ、どうしても煩雑になるので、やはり、直接awkの変数に代入するオプションを使った方がいいと思います。

No.2
- 回答日時:
---------------------------------------
#!/bin/sh
AAA="x y"
export AAA
awk 'BEGIN {print ENVIRON["AAA"]}'
---------------------------------------
export しないとうまく取得できませんでした。
また、環境変数の取得は ENVIRON を使いました。
echo ""は、説明がないとなんだかわからないのでなるべく使わない方がいいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数「exists」と「defined」の...
-
シェルスクリプトで、空白(ス...
-
数値かどうかの判定方法
-
Pythonの np.indicesに関する質...
-
16進の10進変換について
-
JSONで文字列が長い時
-
実行時エラー 3020の対策
-
セレクトボックスを非表示にし...
-
SELECT OPTIONの中身をコピペ...
-
formで特定のinputを送信しない...
-
インラインフレーム内へのリンク
-
プルダウンリストの背景色の指定
-
複数列を持ったリストボックス...
-
Application.ScreenUpdating = ...
-
メモリをアドレスを直接指定し...
-
[python] 文字列を変数名として...
-
C言語のflagの使い方が分かりま...
-
セレクトボックスのselected属...
-
日付の差分の求め方(日、分)
-
sendmailで複数の宛先にメール...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
シェルスクリプトで、空白(ス...
-
16進の10進変換について
-
c言語 16進数の2進数への変換
-
I2C接続のLCDディスプレイを使う
-
【至急!!!】python言語で本を見...
-
関数「exists」と「defined」の...
-
パイソンのクラスについて
-
Pythonでコンソールをクリアす...
-
PythonのJanomeを使って品詞の...
-
至急、[python初心者] listを使...
-
Python3 プログラミング初心者...
-
Lispの、evalはどのようにすご...
-
コラボレイトリーとVSコード
-
Pythonでプログラミング プログ...
-
Python3
-
パイソン文法で
-
int(input("○○"))の使い方
-
プログラミングを教えて下さい
-
pythonを使ったプログラミング...
-
Adafruit LIS3DH 3軸加速度セン...
おすすめ情報