Bash 评估无效命令

Bash Eval invalid command

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

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

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

有什么转义可以避免这个问题吗?

首先,阅读: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[@]}"

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

正确的语法是:

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