評估 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但問題似乎與將兩個命令作為變數有關。這按預期工作:

setenv aa "ls"
"$aa"   

但這失敗了,需要eval

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

相關內容