スクリプト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"