私は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