スクリプト内で2>&1リダイレクトを実行する

スクリプト内で2>&1リダイレクトを実行する

別のスクリプト内でスクリプトを実行し、ログファイルにリダイレクトを含めることはできますか?

大きなスクリプトで3つのスクリプトを実行しようとしています。そのうちの1つを「今」実行する必要があります。以下は、手動で実行する必要がある操作の例です。

sample_script1.sh
at now
sample_script2.sh > sample_script2.log
2>&1
(CTRL + D)
tail -f sample_script2.log
sample_script3.sh

私はこれを試しました(そして他の構文、特に引用された構文を使用していくつかの他の繰り返し):

sample_script_location="$HOME/sample_script.sh"
sample_script_log_location="$HOME/sample_script.log"
echo ""$sample_script_location" > "$sample_script_log_location" 2>&1" | at now

設計どおりに実行すると、手動プロセスはログファイルの下部に「SQL> SP2-0042:不明なコマンド「2>&1」を記録します。エコーを「今」にパイプするスクリプトを使用してこれを実行すると、このメッセージは表示されません。

ベストアンサー1

{ echo a; echo b 1>&2; echo c 1>&2; } 2>&1
a
b
c

いくつかのコマンドを{}中括弧で囲むことができます。望むよりhelp {

at nowいわゆる餌を与えることができますhere-document

sample_script1.sh
at now 2>&1 <<EOF
sample_script2.sh > sample_script2.log
EOF
tail -f sample_script2.log &
sample_script3.sh

script2のstderrをログに記録するには、次の手順を実行する必要があります2>&1>sample_script2.log

sample_script1.sh
at now <<EOF
sample_script2.sh 2>&1 >sample_script2.log
EOF
tail -f sample_script2.log &
sample_script3.sh

このtail -fコマンドはキャンセルされるまで実行されるため、バックグラウンドに置くか、最後のコマンドとして実行する必要があります。望むよりhelp bg

おすすめ記事