Bash Eval无效命令

时间:2016-06-30 22:26:30

标签: java bash eval

我在.sh文件中有以下场景

hello="java -cp \"/home/user/libs/*\" org.user.class parameter"
echo "$hello"
eval $($hello)

如果我尝试运行.sh文件,我会收到以下异常错误:无法找到或加载主类,但如果我执行打印的内容,应用程序就会启动。

是否有任何可以避免此问题的转义?

2 个答案:

答案 0 :(得分:1)

首先,请阅读:I'm trying to put a command in a variable, but the complex cases always fail!

如果您真的必须这样做,请不要使用变量。使用数组。尝试:

hello=(java -cp "/home/user/libs/*" org.user.class parameter)
"${hello[@]}"

答案 1 :(得分:0)

似乎必须删除eval表达式的括号。

正确的语法是:

hello="java -cp \"/home/user/libs/*\" org.user.class parameter"
echo "$hello"
eval $hello