我試圖在後臺運行程序。有沒有辦法通過控制操作員可選。喜歡的東西:控制運算符作爲bash腳本中的可選參數
if some_condition
bg=&
fi
myprog $bg
然而,我所看到的,是bash(正確)處理$bg
作爲參數傳遞給myprog
。我試圖在後臺運行myprog
。
有沒有辦法做到這一點?
我試圖在後臺運行程序。有沒有辦法通過控制操作員可選。喜歡的東西:控制運算符作爲bash腳本中的可選參數
if some_condition
bg=&
fi
myprog $bg
然而,我所看到的,是bash(正確)處理$bg
作爲參數傳遞給myprog
。我試圖在後臺運行myprog
。
有沒有辦法做到這一點?
如何:
if some_condition
then
myprog &
else
myprog
fi
我已經這樣做了。但是,想知道是否有辦法在沒有條件檢查的情況下在一行中處理這個問題。 –
如果您的意圖是隻指定'myprog',那麼我在下面添加了一個解決方案,但是,如果您只運行一次'myprog',那麼James的回答將更可取。 –
我同意詹姆斯·布朗的回答,但是,如果你只希望一次指定myprog
,那麼也許你可以使用一個函數來確定它應該運行在後臺或沒有。但是,這並不意味着你會在最初編寫更多行,但如果你正在運行可能有很多的背景,你可以從中受益......
run_in_background=false
run_cmd() {
echo "Running [email protected]"
if $run_in_background; then
"[email protected]" &
else
"[email protected]"
fi
}
if [[ "$1" == '--bg' ]]; then
run_in_background=true
shift
fi
run_cmd "[email protected]"
然後你就可以像這樣運行:
./script.bash --bg sleep 1
或者,如果你可以在腳本本身運行:
... (Continuing from inside the script above)
run_cmd sleep 1
run_cmd echo hello
wait # Waits for background processes to finish
然後你就可以決定是否在傳遞給run_cmd
的命令將在前臺或backgro通過省略或使用--bg
標誌。
'eval myprog $ bg'? – Cyrus
爲什麼不「如果some_condition;然後myprog&; fi」?否則,你可以使用eval。 – codeforester
我打算建議'eval',但'eval'是'evil'。使用和if語句會更容易和更安全。 –