0

次の行を含む構成ファイルがあります。

pre_args='$REGION','xyz',3

perlcsh スクリプト内から使用すると、次の$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_argsSOUTHxyz3

シェルの組み込みコマンドを使用してこれを行う方法はありますperlか? ちなみに、使用するかどうかcshは私が決めることではないので、それを批判するような返信はしないでください。ありがとう。

4

1 に答える 1

2

eval現在のシェルのコンテキストで引数を解析して実行する を使用できます-次のようなものが機能する場合があります。

eval set pre_args = $pre_args

編集:良い点。引用符-考えてみると、変数をまったく評価していないことに驚いています。eval を追加の sed (引用符をエスケープするため) と組み合わせると、ここではうまくいくように見えますが、醜いです:

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

于 2009-11-17T19:26:56.577 に答える