
私は特定の時間に実行する必要があるbashスクリプトがありat
ます。しかし、問題は、.bashrcを介してbashスクリプトにコマンドライン引数を渡す方法がわからないことですat
。以下のコマンドは、他の解決策を見た後に得られた結果です。
echo "-f job.sh argument" | xargs at now + 2 minutes
しかし、これはうまくいきません。誰でも助けることができますか?
答え1
xargs
(および)を削除します-f
。at
使用しない場合は、標準入力からコマンドを読みます-f
。
~からPOSIX仕様at
:
ユーティリティー
at
は、標準入力からコマンドを読み取り、後で実行するために進行中のジョブと一緒に組み合わせる必要があります。
あなたの場合:
echo 'job.sh argument' | at now + 2 minutes
これはjob.sh argument
2分以内に行われます。
または、
at now + 2 minutes <<'AT_JOB'
job.sh argument
AT_JOB
at
実際にはパラメーターをジョブに渡すことができないため(at -f job.sh argument ...
機能しない)、上記の両方のバリアントでパラメーターをジョブの一部として作成する必要があります。
答え2
at now + 2 minutes
/your/script -flags parameters
^D
書いたところを^D
使うべきCtrl D
またはプログラム的に
echo '/your/script -flags parameters' | at now + 2 minutes
はい
date
Fri 24 Jan 12:45:18 GMT 2020
echo 'date >test.txt' | at now + 2 minutes
warning: commands will be executed using /bin/sh
job 1173 at Fri Jan 24 12:47:00 2020