あいまいなリダイレクトエラーを引き起こすRHEL7 Cronエントリはありますか? [コピー]

あいまいなリダイレクトエラーを引き起こすRHEL7 Cronエントリはありますか? [コピー]

あいまいなリダイレクトエラーを送信する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//'実行してください。 「キャリッジリターン」を検索するとクリックが発生します。

関連情報