假设在linux下,shell脚本,我有
WHATIF_POLLING_SCHEDULER="0 * * ? * *"
。
现在我知道了,ESCAPED_WHATIF_POLLING_SCHEDULER=\"${WHATIF_POLLING_SCHEDULER}\"
CRON1="-Dwhatif.polling.scheduler=$ESCAPED_WHATIF_POLLING_SCHEDULER"
最后,我必须执行
java -jar $MY_JAR
并在其中传递这个 cron 参数。
所以,当我这样做时 java "$CRON1" -jar $MY_JAR
我收到类似“cron 解析器中的值无效”的错误
如果我简单地替换值
java -Dwhatif.polling.scheduler="0 * * ? * *" -jar $MY_JAR
,它就可以正常工作!
我需要在 java 命令中正确传递 CRON1 变量。请帮忙!
我不确定你想用
ESCAPED_WHATIF_POLLING_SCHEDULER=\"${WHATIF_POLLING_SCHEDULER}\"
做什么。
请注意,
java -Dwhatif.polling.scheduler="0 * * ? * *" -jar "$MY_JAR"
在参数值中并不真正包含引号。引号是 shell 语法的一部分。
从 shell 的角度来看,以下命令 100% 相同:
java "-Dwhatif.polling.scheduler=0 * * ? * *" -jar "$MY_JAR"
java -D"whatif.polling.scheduler=0 * * ? * *" -jar "$MY_JAR"
java -Dwhatif.polling.scheduler=0" ""*"" ""*"" ""?"" ""*"" "*" -jar "$MY_JAR"
java -Dwhatif.polling.scheduler=0\ \*\ \*\ \?\ \*\ \* -jar "$MY_JAR"
java -Dwhatif.polling.scheduler='0 * * ? * *' -jar "$MY_JAR"
java -Dwhatif.polling."scheduler=0 * * ? * *" -jar "$MY_JAR"
因此您执行的命令相当于:
java -Dwhatif.polling.scheduler='"0 * * ? * *"' -jar "$MY_JAR"
你真的想跑步:
WHATIF_POLLING_SCHEDULER='0 * * ? * *'
java -Dwhatif.polling.scheduler="$WHATIF_POLLING_SCHEDULER" -jar "$MY_JAR"
无需在值中嵌入引号,因为引号实际上并不是值的一部分。