Bash
“wait &”(“wait &”)是一種有用的(bash)shell / shell 腳本習語或技術嗎?
我已經為執行 GNU“bash”shell 的 Linux 機器“繼承”了一些 shell 腳本。在一種特殊情況下,機器執行 GNU bash 版本 2.0.5b
其中一個腳本有一個
wait &
(“等待與號”)指令作為for
循環“for line”的一部分。乍一看,這似乎是一個奇怪/有趣的成語,但我的網路搜尋沒有返回任何相關內容。man wait
顯示“BASH_BUILTINS”(“BASH BUILTINS COMMAND”)聯機幫助頁,其中有以下描述:wait [n] Wait for the specified process and return its termination status. n may be a process ID or a job specification; if a job spec is given, all processes in that job's pipeline are waited for. If n is not given, all currently active child processes are waited for, and the return status is zero. If n specifies a non-existent process or job, the return status is 127. Otherwise, the return status is the exit status of the last process or job waited for.
通過閱讀此聯機幫助頁的那部分,在我看來,它
wait &
正在默默地(在後台)確保“等待所有目前活動的子程序,並且返回狀態為零。”。我的解釋是對的嗎?這是一個常見和/或有用的習語嗎?為了增加上下文,我在腳本中談論以下類型的用法:
for file in `ls *.txt ; wait &` do ... [cp instructions] ... [mv instructions] ... [mailx instruction] done
我無法想像編寫此程式碼的任何理由,而且我不太確定編寫此程式碼的人想要實現什麼。
wait
這裡什麼都不做——從它的角度來看,沒有子程序,所以它會立即退出並基本上充當一個 noop(wait
由於命令替換,它本身在子程序中執行,但這無關緊要)。順便說一句,解析 ls 的輸出非常脆弱。相反,請考慮這樣做:
for file in *.txt; do ... done