当我在我的unix脚本中定义echo时,我的脚本无效。好像我单独执行它的工作正常。请帮帮我。我的脚本中的Echo如下所示。
echo "Subject :PCDM $1 Monthly Recon Report('`date --date="1 months ago" +%Y%m'`)" >> pcdm_monthly_recon_mailheader1
这里$ 1是我想在执行脚本时传递一个值。这在脚本执行时运行良好。
脚本错误如下。
回声'主题:PCDM智能月度报告(' techo.ksh:第3行:第3行的语法错误:`)'意想不到
答案 0 :(得分:2)
您的报价不正确:
echo "Subject :PCDM $1 Monthly Recon Report('`date --date="1 months ago" +%Y%m'`)" >> pcdm_monthly_recon_mailheader1
应该是:
echo "Subject :PCDM $1 Monthly Recon Report('`date --date="1 months ago" +%Y%m`')" >> pcdm_monthly_recon_mailheader1
你混淆了后面的勾号和单引号,这很难看出来。正如@Oleg Vaskevich所说,这是不使用DEPRECATED反向语法的一个很好的理由。所以:
echo "Subject :PCDM $1 Monthly Recon Report('$(date --date="1 months ago" +%Y%m)')" >> pcdm_monthly_recon_mailheader1
答案 1 :(得分:1)
您通常应该尝试使用$(your command)
而不是“您的命令”。不过,这对我有用:
echo "Subject :PCDM $1 Monthly Recon Report('$(date --date="1 months ago" +%Y%m)')" >> pcdm_monthly_recon_mailheader1
但是,如果您这样编写代码可能更容易阅读:
date=$(date --date="1 months ago" +%Y%m)
echo "Subject :PCDM $1 Monthly Recon Report('$date')" \
>> pcdm_monthly_recon_mailheader1