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"   

関連情報