我在.sh文件中有以下场景
hello="java -cp \"/home/user/libs/*\" org.user.class parameter"
echo "$hello"
eval $($hello)
如果我尝试运行.sh文件,我会收到以下异常错误:无法找到或加载主类,但如果我执行打印的内容,应用程序就会启动。
是否有任何可以避免此问题的转义?
答案 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