2014-01-08 3 views
1

Существует сценарий bash для задания задания cron.Bash Variable во время выполнения

start.sh:

read -e -p "Enter the path to the log directory: " -i "/home/arya/apps/" LOGPATH 
read -e -p "Enter comma separated recepient email-ids:" EMAIL 

CURRENT=`pwd` 
COMMAND="python ${CURRENT}/start.sh 2014-08-01T21:12:12 2014-08-01T23:12:12 $LOGPATH $EMAIL" 
echo $COMMAND #Here expected output is coming : */3+1 * * * * python /home/arya/start.sh 2014-08-01T21:12:12 2014-08-01T23:12:12 /home/arya/apps/utils [email protected] 
cat <(fgrep -i -v "$COMMAND" <(crontab -l)) <(echo "*/3+1 * * * *") | crontab - 

Это не принимает $ CURRENT значение в кронтаб файл. Ouput на поиск файла с помощью кронтаб -e команды:

*/3+1 * * * *   rest things are missing. 

Ожидаемый результат:

*/3+1 * * * * python /home/arya/start.sh 2014-08-01T21:12:12 2014-08-01T23:12:12 /home/arya/apps/utils [email protected] 

Что здесь проблема?

ПЛАТФОРМА: UBUNTU 13,04

+0

Согласно вашему результату, кажется, что отсутствует вся команда 'COMMAND', а не только' CURRENT'. Моя первая предпосылка заключается в том, что вывод 'fgrep' выходит пустым или нулевым, поэтому вы просто получаете вывод' echo'. Вы можете сломать его и сначала проверить каждую часть. Попробуйте запустить команду 'fgrep -i -v '$ COMMAND" <(crontab -l) 'самостоятельно, установив переменные оболочки' CURRENT' и 'COMMAND' и посмотрим, дает ли она вам то, что вы ожидаете. – lurker

+0

[UUOC] (http://partmaps.org/era/unix/award.html) – l0b0

+0

Но echo $ COMMAND дает полную вещь. –

ответ

1

Вам нужно добавить переменную COMMAND в эхе, чтобы отобразить его.

cat <(fgrep -i -v "$COMMAND" <(crontab -l)) <(echo "*/3+1 * * * * $COMMAND") | crontab - 
Смежные вопросы