atを使用してこのコマンドを実行すると、bashシェルスクリプトにパラメータを渡すにはどうすればよいですか?

atを使用してこのコマンドを実行すると、bashシェルスクリプトにパラメータを渡すにはどうすればよいですか?

パラメータを受け入れてスクリプトで使用するシェルスクリプトがあります。だから私が入力したスクリプトを実行するには /path/to/script argument

at問題は、ユーティリティで実行するようにファイルを設定しようとしたときに発生します。頑張りました

at -f /path/to/script argument 17:45

at -f '/path/to/script argument' 17:45

ただし、これらのオプションのいずれも機能しません。 1つ目は構文エラーが発生し、2つ目はそのファイルがないと言います。

答え1

atデフォルトは標準入力から読み取るものなので、次のようにできます。

echo /path/to/script argument | at 17:45

答え2

通常@warl0ckのアドバイスに従うことをお勧めします。次の新しいスクリプトを作成します/path/to/newscript

 #!/bin/bash
 /path/to/script argument

次に、次のように実行しますat

 at -f /path/to/newscript 17:45

これにより、必要なパラメータを簡単に調整し、複数のコマンドを実行できます。

あるいは、時折または使い捨てのためにat選択した時間にのみ実行してから、標準入力に必要なコマンドを入力することもできますctrl-D

 myhost# at 17:45
 /path/to/script argument
 <ctrl-D>
 Job 1 will be executed using /bin/sh

答え3

私もこの問題を経験し、EOFで解決しました。

リモートサーバー(sshserverhost)のパラメータ実行への接続を開始しますsshsshserverhosttest.sh$HOSTNAME

at now + 1 minutes <<EOF
ssh -t sshserverhost 'bash -s' <~/test.sh $HOSTNAME
EOF 

関連情報