質問

私は次の行が含まれている設定ファイルを持っています:

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は、現在のように設定されます。SOUTHxyz3

シェルの組み込みコマンドを使用して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を与えます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top