2016-06-28 4 views
0

Так что для жизни я не могу понять, почему мой скрипт не примет мою команду date в качестве переменной. У меня есть сценарий, который запускается каждый раз при получении сообщения, а procmail фильтрует определенные сообщения по их теме. Сценарий выглядит следующим образом:Установка текущей даты в переменную в скрипте в bash

d=$(date +%Y%m%d) 

:0 wc 
* ^(From|subject).*xxx 
| cat&>/xx/xx/xx/xx/MSG:$d && \ 
chmod xxx /xx/xx/xx/xx/MSG:$d && \ 
/xx/xx/xx/otherscript.sh /xx/xx/xx/xx/MSG:$d 

Я запустил команду много дат раз в других сценариях и к stdout без любого вопроса, поэтому мне интересно, если это procmail вопрос? Я просмотрел несколько разных сайтов об этом, но до сих пор не нашел решения. Моя конечная цель - создавать уникальные имена файлов, а также для целей организации каждый раз, когда приходит новое письмо.

Другая причина, по которой я полагаю, что она имеет какое-то отношение к procmail, заключается в том, что она отлично работала всего 3 месяца назад (не изменял никаких файлов или разрешений). Я даже попытался несколько вариаций (показывая только несколько примеров):

$'date +"%Y%m%d"' 
$(date) 
echo $(date) 

Я получаю множество файлов, создаваемое начиная с его печатью MSG: (дата), MSG:. (Дата и т.д. MSG: появляется (дата

И в конце моего скрипта я отправляю его на другой скрипт, который также создает новый файл с именем, который должен быть отключен, или пробел между датой и + вызывает проблему. дата прилагается и работает очень хорошо:

fileOut="/xxx/xxx/xxx/xxx.$v.$(date +"%Y%m%d-%H%M%S").xxx" 
prints: xxx.YH8AcFV9.20160628-090506.txt 

Спасибо за ваше время :-)

+0

Документация, которую я вижу, указывает, что: '' d = 'date + '% Y% m% d" '' 'должен делать трюк. Вы пробовали это? –

+0

Установите 'UMASK' вместо того, чтобы возиться с' chmod' или, еще лучше, измените свой скрипт, чтобы он читал со стандартного ввода. – tripleee

ответ

1

Procmail не поддерживает современный синтаксис подстановки команды оболочки POSIX; вам нужно использовать backticks.

d=`date +%Y%m%d` # or just date +%F 

Если вы хотите, чтобы избежать вызова внешнего процесса, псевдо-заголовок From_ содержит свежий штамп даты на многих архитектурах.

+0

Нет замены для опыта .... –

+0

Цените его, не понимаете, Procmail не использовал тот же синтаксис. –