crontabジョブと同じcrontab行にコメントが許可されないのはなぜですか?

crontabジョブと同じcrontab行にコメントが許可されないのはなぜですか?

これは私が英語を母国語として使用している人ではないので変わることがありますが、クローンタブ5マニュアルページ自体が矛盾しています。

空行、先行スペース、タブは無視されます。空白以外の最初の文字がポンド記号(#)の行はコメントであるため無視されます。コメントはコマンドの一部と見なされるため、cronコマンドと同じ行には許可されません。同様に、環境変数の設定と同じ行に注釈を付けることはできません。

たとえば、crontabライン

00 20 * * *  sh test.sh  # frobnicate the sales data

これはうまくいくようです。それでは、問題は何ですか?

このコメントはcron自体で解析され解釈されないことは明らかです。これは最後のコマンドフィールドの一部として処理され、シェルに渡されます。シェルはこれを問題なくコメントアウトします。

それでは、問題は何ですか?

それとも、crontabのマニュアルページがうまく表現されていませんか?

ベストアンサー1

Marcusの回答が示すように、あなたの質問はすでにここに回答されています。

このコメントはcron自体で解析され解釈されないことは明らかです。これは最後のコマンドフィールドの一部として処理され、シェルに渡されます。シェルはこれを問題なくコメントアウトします。

ただし、これを実際の環境に適用するには、次の点を考慮してください。

SHELL=/bin/sh
* * * * * foo.sh bar#bar

/bin/shPOSIXなどのshをコメントアウトとして使用しないでください引数を使用して-c実行します。ただし、引数を使用して実行してください。 Cronは「レビュー」に興味がありません。foo.sh bar#bar#foo.shbar#bar

* * * * * foo.sh "foo #bar"

以前と似ています。

SHELL=/bin/echo
* * * * * foo bar # asdf

これはechoパラメータ-cとを使用して実行されますfoo bar # asdfecho文字列を正しく印刷します。 Cronは「レビュー」に興味がありません。

より簡単な場合には、

00 20 * * *  sh test.sh  # frobnicate the sales data

cronは引数を取り、シェルを実行し、-cPOSIXsh test.sh # frobnicate the sales dataに似たシェルはそれをコメントアウトして実行する前に削除する必要がありますsh test.sh。 cronは、 "shell"がコマンドラインで実行することに実際には気にしません。

マニュアルページに「コメントは許可されていない」と書かれているからといって、それにハッシュ記号を入れることが禁止されるという意味ではなく、単にcronからコメントとして処理されないということです。ここで、「許可」は「可能にする」を意味します(例:7を意味するwiki単語辞書)。

おすすめ記事