#!/bin/bash PROP_FILES=./props/default.properties #EXTRA_PROP_FILES_HERE ARGS="-cp \"lib/*\"" ARGS="$ARGS -Xmx10G" ARGS="$ARGS -Duser.timezone=GMT" ARGS="$ARGS -Danl.property.files=$PROP_FILES" java $ARGS main.class.path.Main
问题出在 ARGS="-cp \"lib/*\"" . 我正在用命令调试文件 bash -x runscript.sh .
ARGS="-cp \"lib/*\""
bash -x runscript.sh
如果我转义通配符cp(如上面的脚本中所示),则脚本输出失败(请注意额外的单引号):
java -cp '"lib/*"' ...
如果我不逃过这一劫 *
*
如何修改脚本以使其调用此脚本?
java -cp "lib/*" ...
当前位置我知道我能做到 java -cp "lib/*" $ARGS .., ,但我真的很想让它工作。
java -cp "lib/*" $ARGS ..,
您应该使用带有正确引号的数组:
propfiles='./props/default.properties' args=(-cp 'lib/*') args+=(-Xmx10G -Duser.timezone=GMT) args+=("-Danl.property.files=$propfiles") java "${args[@]}" main.class.path.Main
此外,使用大写变量名更容易与环境变量冲突,因此最好避免使用大写变量。