评估 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"   

相关内容