2015-04-19 3 views
-1

Когда я определяю echo в моем скрипте unix, мой скрипт не работает. Где, как если бы я выполнял его индивидуально, он работает нормально. Пожалуйста, помогите мне здесь. Эхо в моем скрипте выглядит как показано ниже.Невозможно использовать echo в моем скрипте unix

echo "Subject :PCDM $1 Monthly Recon Report('`date --date="1 months ago" +%Y%m'`)" >> pcdm_monthly_recon_mailheader1 

здесь $ 1 - я хочу передать значение при выполнении скрипта. Это отлично работает с выполнением скрипта.

Ошибка сценария ниже.

эхо 'Тема: PCDM умный Месячный Recon Доклад (' techo.ksh: Строка 3: ошибка синтаксиса в строке 3: `)» неожиданный

+2

Почему имя файла в сообщении об ошибке выглядит как скрипт оболочки korn, в то время как этот вопрос отмечен 'bash'? – arkascha

+0

Я обеспокоен тем, что вы заявляете, что когда вы выполняете его индивидуально, он работает нормально и что ошибка исходит из строки 3, хотя вы показываете только одну строку. Проблема в том, что это может быть строка * previous * (строка 2), вызывающая ошибку, например, с отсутствующей цитатой. Номера строк показывают только, где ошибка была обнаружена *, а не там, где она есть. Пожалуйста, покажите предыдущие строки в скрипте. – cdarke

ответ

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 
+0

Хотя это все правильно, я не вижу, как он отвечает на вопрос. Разве это не входило в комментарий? – cdarke

+1

Вопрос не был четко сформулирован в начале и были ошибки форматирования, поэтому я думал, что у ОП просто слишком много цитат или что-то еще. –

+1

Согласен, и при ближайшем рассмотрении вы исправили его, предложив синтаксис '$()'. – cdarke

2

Вы неверно процитировать:

echo "Subject :PCDM $1 Monthly Recon Report('`date --date="1 months ago" +%Y%m'`)" >> pcdm_monthly_recon_mailheader1 

Если be:

echo "Subject :PCDM $1 Monthly Recon Report('`date --date="1 months ago" +%Y%m`')" >> pcdm_monthly_recon_mailheader1 

Вы перепутали задние тики и одинарные кавычки, что было трудно понять. Это действительно хорошая причина для того, чтобы не использовать синтаксис DEPRECATED back-tick, как заявил Олег Васкевич. Итак:

echo "Subject :PCDM $1 Monthly Recon Report('$(date --date="1 months ago" +%Y%m)')" >> pcdm_monthly_recon_mailheader1 
Смежные вопросы