无法在我的unix脚本中使用echo

时间:2015-04-19 07:03:12

标签: bash unix

当我在我的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行的语法错误:`)'意想不到

2 个答案:

答案 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