at
コマンドを使用して、将来スクリプトを1回実行できます。
at now + 1 minutes -f ~/script.sh
または文字列コマンドnowを実行して、将来の結果を返します。
echo "xyz" >> ~/testtest.txt | at now + 1 minute
代わりに、現在ではなく(例1のように)将来実行される文字列コマンド(例2のように)を渡すにはどうすればよいですか?例えば。
at now + 1 minutes -SOMEFLAG 'echo "xyz" >> ~/testtest.txt'
ありがとう
コマンドを単一引用符で囲み、そのままat
に渡すことができます。
echo 'echo "xyz" >> ~/testtest.txt' | at now + 1 minutes
または、bashまたは プロセス置換 をサポートする別のスクリプトを使用している場合は、次のようにできます。
at now + 1 minutes < <(echo 'echo "xyz" >> ~/testtest.txt')
これは基本的に、コマンドでファイルを渡すのと同じように、at
にファイル名を渡します。
ただし、ヒアドキュメントを Kusalanandaの提案 として使用すると、シェルのサポートするプロセス置換に依存しないため、移植性が向上します。
ヒアドキュメントを使用して、後でコマンドラインで実行するスクリプトを渡します。
at now + 1 minute <<'END_AT'
echo 'xyz' >> ~/testtest.txt
END_AT
Here-documentが引用され(<<'END_AT'
ではなく<<END_AT
を使用して)、現在のシェルがスクリプトテキスト内の変数などを展開しないようにします。ドキュメントは標準入力でat
に渡されます。