awk は cshell のドル記号として提供される変数を受け入れます。

awk は cshell のドル記号として提供される変数を受け入れます。

Cシェルスクリプトでbbbをawk subに渡そうとしても動作しないようです。

#!/bin/csh
set aaa=a
set bbb=b

#And I'm using it in awk sub

set ccc=`echo $aaa | awk '{sub("a",$bbb); print $0}'`

echo $ccc

しかし、エゴリは空虚で、理由はわかりません。

$ bbbを "b"に置き換えると正常に動作します。

答え1

シェル変数をに渡す必要がありますawk

set ccc=`echo $aaa | awk -v bb=$bbb '{sub("a",bb); print $0}'`

awkシェル変数を参照するときは、参照を閉じて再度開きます。

set ccc=`echo $aaa | awk '{sub("a",'$bbb'); print $0}'`

関連情報