awkで1行に環境変数を設定しようとしています。
$ <source command> awk '/inst/ { n = split($0,a,"/"); cmd = "setenv " a[n-1] "_ver" $0; system(cmd) }'
しかし、私が得た結果は「sh:setenv:コマンドが見つかりません」です。
答え1
setenv
csh専用のコマンドですが、代わりにBourneシェル()を介してsystem()
引数を実行します。/bin/sh
csh
export VARIABLE=value
しかし、このようにしても効果はありません。system()
新しいシェルを起動し、そのシェルでコマンドを実行します。コマンドが終了すると、シェルとその環境が消えます。したがって、設定した環境変数はすぐに消えます。
あなたがしなければならないことawk
は、実行して出力するコマンドのリストを生成することですcsh
(実行しようとしないでください)。その後、awk
読み取り出力を呼び出すシェルを作成してawk
実行する必要があります。
eval `the awk command`