我在我的bashrc
中有一個小函數,所以我可以運行一個腳本並在輸出完成後將輸出發送到我的電子郵件。代碼如下:bash nohup有兩個命令
run() {
[email protected]
last="${!#}"
rest="${@:1:($#-1)}"
(nohup $rest &> $last < /dev/null; mail -s "$rest" "$email" < "$last") &
}
功能用於這樣
run ./script.sh arg1 arg2 output
,它似乎是工作的大部分時間,但有時即使腳本完成的電子郵件不會發送。我懷疑這與我關閉服務器終端有關。在這些情況下,由於nohup
腳本仍在運行,但它不會在最後發送電子郵件。爲了讓它正常工作,我真的很感激一些指針。
'rest =「$ {@:1:($# - 1)}」'是一個壞主意 - 你無法準確地表示一個標量的參數向量,所以這個運行可能會使用'rest =(「$ {@:1:($# - 1)}」)',然後使用'「擴展它」 $ {rest [@]}「'(或者,對於單參數主題行版本,」$ {rest [*]}「......或者更確切地說,是'printf -v rest_cmd'%q' 「$ {rest [@]}」',然後使用'「$ rest_cmd」'作爲郵件參數) –
感謝您的提示,我肯定會改變這種情況。 – skd