crontabで行を続けるために "\"を使用できないのはなぜですか?

crontabで行を続けるために

これacme-client(1) のマニュアルページ次のcronエントリをお勧めします。

~   *   *   *   *   acme-client example.com && \
    rcctl reload httpd

編集用に追加すると、次の構文を使用するcrontabと保存されません。

crontab: installing new crontab
"/tmp/crontab.nOryzjBTlv":22: bad minute
crontab: errors in crontab file, unable to install
Do you want to retry the same edit? 

ただし、1行だけを使用すると大幅なコストを節約できます。

~   *   *   *   *   acme-client example.com && \ rcctl reload httpd

\1行を次の行に続けることが許可されていないのはなぜですか?

ベストアンサー1

単一のコマンドラインは、シェルの末尾の「\」など、複数行に分割することはできません。

その場合は、次の段落で上記の内容を見つけることができますman 5 crontab。以下は、Ubuntu 20.04LTSからのものです。

「6番目」フィールド(行の残りの部分)は、実行するコマンドを指定します。行の完全なコマンド部分(改行または%文字まで)は、/ bin / shまたはcrontabファイルのSHELL変数で指定されたシェルによって実行されます。バックスラッシュ(\)でエスケープしない限り、コマンドのパーセント記号(%)は改行文字に変更され、最初の%以降のすべてのデータはコマンドに標準入力として送信されます。単一のコマンドラインは、シェルの末尾の「\」など、複数行に分割することはできません。

~からhttps://man.openbsd.org/crontab.5
それは言う残りの行コマンドフィールドなので、コマンドが複数行にまたがっている方法については何も教えてくれません。 crontabがシェルスクリプトと同じ構文を持っていると仮定してはいけません。

コマンドフィールド(残りの行) は実行するコマンドです。行の完全なコマンド部分(改行または%文字まで)は、/ bin / shまたはcrontabのSHELL変数で指定されたシェルによって実行されます。バックスラッシュ(「\」)でエスケープしない限り、コマンドのパーセント記号(「%」)は改行に変更され、最初の「%」以降のすべてのデータはOrderに標準入力として送信されます。

おすすめ記事