Сервер загрузки из grub2 внесение изменений в постоянные

Если первым аргументом к скрипту является имя задания, а вторым - команда1 && command2 && command3, то команда, которую вы строите в переменной join, является чем-то вроде

command1 && command2 && command3>> /path/to/cron/log/dir/May_12_2015/jobname_2015-05-12_01-09-25.log  2>&1

Вы вызываете eval на этой строке, и она обрабатывается обычным способом. Переадресация относится только к `команде3.

Вы хотите трактовать второй аргумент как фрагмент оболочки, а не как префикс фрагмента оболочки. Так что не надо к нему примыкать. Переадресация принадлежит непосредственно в скрипте, а не под eval, так как вы указываете ее непосредственно в скрипте, а не через строку, которую нужно разобрать. Обратите внимание, что ваш код прервется, если имя задания будет содержать какой-либо специальный символ оболочки, например, $CRON_WRAPPER $(touch /tmp/foo) выполнит код touch /tmp/foo.

Другая проблема с вашим скриптом в том, что вы ставите запятые между аргументами, если их больше двух, что не имеет смысла. Соединение их пробелами имело бы больше смысла, и это просто "$*. (Для соединения с запятыми, как разделителями, то, что вы сделали, слишком сложно. В zsh используйте ${(j:,:)@}. )

Замените часть сценария, начиная с # Объединяя команды: на

eval "$*" >>$CRON_LOG_FILE  2>&1
1
28.11.2017, 00:29
0 ответов

Теги

Похожие вопросы