给定的shell命令有什么区别

时间:2018-09-25 08:52:52

标签: linux

我正在尝试使用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

有人可以告诉我上述命令有什么区别吗?

1 个答案:

答案 0 :(得分:1)

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

shellcheck https://www.shellcheck.net/之类的工具可以帮助您在shell脚本中查找问题。