我正在瀏覽一個set -m使用過的shell腳本。我的理解是set用于獲取位置引數。
例如:set "SO community is very helpful". 現在,如果我這樣做echo $1,我應該SO以 2 美元、3 美元的價格獲得等等……
使用幫助標志檢查命令后,我得到“-m 作業控制已啟用”。
我的問題是,set -m以下代碼的目的是什么?
set -m
(
current_hash="some_ha54_one"
new_hash=$(cat file.txt)
if [ $current_hash -ne new_hash ]; then
pip install -r requirement.txt
fi
tmp="temp variable"
export tmp
bash some_bash_file.sh &
wait
bash some_other_bash_file.sh &
)
我了解(據我所知)我在里面()發生了什么,但有什么用set -m?
uj5u.com熱心網友回復:
“作業控制”啟用了 和 等bg功能fg;信號處理和檔案描述符路由更改旨在供人類操作員使用,這些操作員可能會使用它們將后臺任務帶到前臺以為他們提供輸入;以及通過作業編號而不是 PID 來參考后臺任務的能力。您顯示的腳本段沒有使用這些功能,因此該set -m呼叫可能毫無意義。
這些功能適用于人類用戶,而不是腳本;所以在腳本中它們默認是關閉的。一般來說,試圖在腳本中使用它們的代碼是有問題的,應該用由 PID 操作的代碼替換。例如,并行運行兩個腳本,然后在它們完成時收集每個腳本的退出狀態而不需要作業控制的代碼如下:
bash some_bash_file & some_pid=$!
bash some_other_file & some_other_pid=$!
wait "$some_pid"; some_rc=$?
wait "$some_other_pid"; some_other_rc=$?
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/491424.html
