我正在尝试使用shell脚本执行以下命令,但没有成功:

currentdate="2018-09-21T18:00:00Z,"
ID="000db859-e1ee-40e9-8028-fa702beb643c"
echo $ID
echo $currentdate
dd="'[$currentdate "\"$ID\""]'";
echo $dd
/apollo/env/EDXClient/bin/edx parcel download --provider ucp-ipg --subject rtm-instrumentation --dataset rtm-instrumentation-dataset-hour-sliced --dataset-key $dd --destination /home/srimani/Desktop/j.txt

获取异常:“在第1行偏移24处遇到意外的EOF”
当我在shell上直接运行下面的命令时,它的工作原理是:
desktop%/apollo/env/EDXClient/bin/edx parcel download --provider ucp-ipg --subject rtm-instrumentation --dataset rtm-instrumentation-dataset-hour-sliced --dataset-key '[2018-09-21T18:00:00Z,"000db859-e1ee-40e9-8028-fa702beb643c"]' --destination /home/srimani/Desktop/j.txt

有人能告诉我上面的命令有什么不同吗?

最佳答案

shell脚本的第一行必须是一个shebang,它告诉解释器要用来执行脚本的程序。例如,您可以添加:#!/bin/bash
您还可以使用

bash script.sh

下一个双引号dd变量使用时,防止全局搜索和分词。结果脚本将变成:
#!/bin/bash
currentdate="2018-09-21T18:00:00Z,"
ID="000db859-e1ee-40e9-8028-fa702beb643c"
echo $ID
echo $currentdate
dd="'[$currentdate "\"$ID\""]'"
echo "$dd"
/apollo/env/EDXClient/bin/edx parcel download --provider ucp-ipg --subject rtm-instrumentation --dataset rtm-instrumentation-dataset-hour-sliced --dataset-key "$dd" --destination /home/srimani/Desktop/j.txt

像shellcheckhttps://www.shellcheck.net/这样的工具可以帮助查找shell脚本中的问题。

08-27 20:17
查看更多