あいまいなリダイレクトエラーを送信するcrontabエントリがありました。日付を読むコマンドであることは確かですが、修正方法がわかりません。他の解決策がありますか?
/bin/sh は /bin/bash にリダイレクトされます。
/opt/startup-shutdown/startup.instances Other > /tmp/`date +%Y%m%d%H%M%S`-cron.log 2>&1
以下を提供します。
/bin/sh: 1
: ambiguous redirect
答え1
クローンタブの使用%特別な目的のために:
改行文字までの行の完全なコマンド部分または % 文字、/bin/sh、またはcrontabファイルのSHELL変数で指定されたシェルによって実行されます。バックスラッシュ()でエスケープしない限り、コマンドのパーセント記号(%)は改行文字に変更され、最初の%以降のすべてのデータはコマンドに標準入力として送信されます。
crontabにdateコマンドを入れると、すべて%バックスラッシュを使用して引用する必要があります。
答え2
キャリッジリターン問題だと思います。
たとえば、リダイレクト演算子の右側にある単語が複数のフィールドに展開されている場合(echo > *
例:getsでは)、Bashが表示するエラーですbash: *: ambiguous redirect
。
ここでは1
、その後に改行文字があると言われています。次の入力で同様のエラーが発生する可能性があります2>&1<CR><LF>
。
$ printf 'echo foo 2>&1\r\n' |bash
: ambiguous redirect
ここで、CRはカーソルを行の先頭に移動するため、その後のすべての内容が最初の部分を上書きします。ここにCRが表示されます。
$ printf 'echo foo 2>&1\r\n' |bash 2>&1|cat -A
bash: line 1: 1^M: ambiguous redirect$
あなたの場合、CRが通常の改行で印刷される理由がわかりません。端末設定にすることができます。
ファイルがWindowsで提供されていることを確認し、dos2unix
他の方法でsed -i 's/\r//'
実行してください。 「キャリッジリターン」を検索するとクリックが発生します。