Bash

在腳本中執行 2>&1 重定向

  • June 23, 2015

是否可以從另一個腳本中執行一個腳本,並將重定向包含到日誌文件中?

我正在嘗試從一個更大的腳本中執行 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

引用自:https://unix.stackexchange.com/questions/210812