我想知道爲什麼代碼塊在下面這個例子中使用:代碼塊使用{}在bash
possibly_hanging_job & { sleep ${TIMEOUT}; eval 'kill -9 $!' &> /dev/null; }
這可能是這樣寫的(不使用代碼塊爲好)..right?
possibly_hanging_job &
sleep ${TIMEOUT}
eval 'kill -9 $!' &> /dev/null
我想知道爲什麼代碼塊在下面這個例子中使用:代碼塊使用{}在bash
possibly_hanging_job & { sleep ${TIMEOUT}; eval 'kill -9 $!' &> /dev/null; }
這可能是這樣寫的(不使用代碼塊爲好)..right?
possibly_hanging_job &
sleep ${TIMEOUT}
eval 'kill -9 $!' &> /dev/null
將最後兩個命令放在大括號中,可以清楚地說明:「這些不僅僅是兩個額外的命令,我們發生要在可能掛起的長時間運行的進程之後運行;他們,相反,整體以得到它正確關閉之前,我們與shell腳本的其餘部分繼續「如果提交人,而不是寫:
command &
a
b
c
它不會是完全清楚,a
和b
只是部分獲取command
正確結束。通過寫這樣的:
command & {a; b}
c
筆者使得它更清晰的是a
和b
用於獲取command
完全結束,實際下一步驟之前清理而存在的,c
發生。
是的,我沒有看到任何理由讓大括號出現在這裏。
其實我甚至想知道爲什麼有eval
。據我所見,它也應該沒有這個工作。
關於您的實際問題: 我猜這個代碼塊是爲了強調sleep
屬於kill
。但沒有必要。它也應該像這樣工作:
possibly_hanging_job & sleep ${TIMEOUT}; kill -9 $! &> /dev/null