cronのシェルスクリプトにパラメータとしてパーセント記号(%)を含むファイル名を渡すにはどうすればよいですか? [コピー]

cronのシェルスクリプトにパラメータとしてパーセント記号(%)を含むファイル名を渡すにはどうすればよいですか? [コピー]

現時点では、次のように新しいスクリプトのcronジョブを設定しています。

46 22 * * * /gzm_common/diagbat9/global/prod/chgstatus.sh /backups/diagbat9/Demantra/output/SK_ITEM_EXTRACT_MFGPRO_$(date +%m%d%y).txt

.txt 拡張子を持つファイルを引数として使用します。このファイルは、cronジョブの実行時には生成されません。これは私たちが午後22時46分に得たファイルです:

22:46    SK_ITEM_EXTRACT_MFGPRO_

このファイルはゼロバイトのファイルですが、多くのデータを含める必要があります。フルファイルパスと名前を二重引用符で囲む必要がありますか?

答え1

バックスラッシュを使用してパーセント文字をエスケープする必要があります。

.../SK_ITEM_EXTRACT_MFGPRO_$(date +\%m\%d\%y).txt

crontab(5)マニュアルページからISCの実装cron:

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

関連情報