Я пишу скрипт оболочки для Mac OS/Linux. Скрипт запускается заданием cron. Я пытаюсьдобавить stdout и stderrв файл журнала. Моя команда (упрощенно) выглядит так (строка 5 в myscript.sh
):
mycommand &>> log.txt
Я получаю следующую ошибку:
myscript.sh: line 5: syntax error near unexpected token `>
Однако если я изменю команду на:
mycommand &> log.txt
Никаких ошибок не возникает, но файл перезаписывается (не добавляется).
Есть идеи, почему &>>
не работает, но &>
работает?
решение1
cron
выполняется с помощью sh
, а синтаксис перенаправления, который вы пытаетесь использовать, является расширением Bash (причем довольно новым; поддерживаются только более старые версии Bash &>
).
Портативный способ добавления стандартного вывода и стандартной ошибки в файл —
mycommand >>log.txt 2>&1