csh で文字列を評価する

csh で文字列を評価する

スクリプト1は次のとおりです

#!/bin/csh
echo $*
$*

次に、コマンドラインで次のコマンドを実行します。

>script1 setenv VAR "/user/path" \; ls

出力は次のようになります。

setenv VAR /user/path ; ls
setenv: Too many arguments.

修正するアイデアはありますか?

答え1

なぜこれが必要なのかよくわかりませんが、変数を評価するのではなく実行しようとしているのが問題です。代わりにこれを試してください:

#!/bin/csh
echo "$*"
eval "$*"

それから

script1 setenv VAR "/user/path" \; ls

よく分かりませんcshが、問題は 2 つのコマンドを変数として持つことに関係しているようです。これは期待どおりに動作します:

setenv aa "ls"
"$aa"   

しかし、これは失敗し、以下が必要になりますeval:

setenv aa "ls; echo foo"
"$aa"   

関連情報