質問
私は次の行が含まれている設定ファイルを持っています:
pre_args='$REGION','xyz',3
のcshスクリプト内からperl
を使用すると、私はそうのような環境変数$REGION
を評価することができます:
set pre_args = `grep -v '^#' $config_file | grep pre_args | cut -f 2 -d = | sed 's/ //g'`
if ("$pre_args" != "") then
set pre_args = `echo $pre_args | perl -ne 'use Env; s/(\$\w+)/$1/eeg; print'`
endif
$REGION = SOUTH
場合は、$pre_args
は、現在のように設定されます。SOUTH
、xyz
、3
シェルの組み込みコマンドを使用してperl
を使用してに頼らないでこれを行う方法はありますか?ところで、csh
を使用するための選択肢は私のものではありませんので、それを批判一切回答を喜びません。おかげます。
解決
あなたは現在のシェルのコンテキストでその引数を解析し、実行eval
を、使用することができます - このような何かが動作する可能性があります:
eval set pre_args = $pre_args
の編集の良い点を再。引用符は、 - それについて考えて、私はそれがすべての変数を評価した驚いています。 (引用符をエスケープする)sedを余分にevalを組み合わせることで、ここで働いているようだが、それは醜います:
set pre_args = grep -v '^#' config | grep pre_args | cut -f 2 -d = | sed 's/ //g' | sed "s/'/\\'/g"
set REGION = SOUTH
eval set pre_args = $pre_args
echo $pre_args
私'SOUTH','xyz',3
を与えます。
所属していません StackOverflow