Bash
在腳本中執行 2>&1 重定向
是否可以從另一個腳本中執行一個腳本,並將重定向包含到日誌文件中?
我正在嘗試從一個更大的腳本中執行 3 個腳本。其中一個需要“現在”執行。這是我應該手動執行的範例:
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: unknown command “2>&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
。