すぐに実行できるようにしながら、 "at"コマンドにスクリプトパスの代わりに文字列コマンドを渡します。

すぐに実行できるようにしながら、 "at"コマンドにスクリプトパスの代わりに文字列コマンドを渡します。

このatコマンドを使用すると、後で一度スクリプトを実行できます。

at now + 1 minutes -f ~/script.sh

または文字列コマンドを実行してくださいその後、今後の結果を返します。

echo "xyz" >> ~/testtest.txt | at now + 1 minute

今(例1)ではなく、将来実行される文字列コマンド(例2)をどのように渡すことができますか?例えば

at now + 1 minutes -SOMEFLAG 'echo "xyz" >> ~/testtest.txt'

ありがとう

答え1

後でコマンドラインで実行するスクリプトを渡すには、こちらの記事を使用してください。

at now + 1 minute <<'END_AT'
echo 'xyz' >> ~/testtest.txt
END_AT

現在、シェルがスクリプトテキスト内の変数などを拡張するのを防ぐために、ここにあるドキュメントが参照されます(<<'END_AT'代わりに使用して)。<<END_AT文書はat標準入力を介して渡されます。

答え2

コマンドを一重引用符で囲んでそのまま渡すatことができます。

echo 'echo "xyz" >> ~/testtest.txt' | at now + 1 minutes

または、bashまたは他のサポートされているスクリプトを使用している場合プロセスの交換、あなたはできます:

at now + 1 minutes < <(echo 'echo "xyz" >> ~/testtest.txt')

atこれは、デフォルトでコマンドにファイルを渡すのと同じように、ファイル名を渡します。

ただし、heredocを次のように使用します。クサロナンダのアドバイスプロセスの交換をサポートするためにはシェルに依存しないため、移植性が高くなければなりません。

関連情報