我對bash並不熟悉。我有一個場景,我用一些參數調用一個函數,並將返回值賦給一個變量。使用參數調用函數而不使用子shell - bash
下面是一個示例代碼:
function f1() {
if [[ $1 =~ $IP_REGEX ]]
then
return 0
else
echo 'Invalid IP'
exit 1
end
}
function f2() {
# read ip from json file using jq
local config=<read config>
# validate ip by calling f1 if second argument passed to f2 is 'ip'
[[ $2 == "ip" ]] && f1 $config
echo $config
}
function read_all_configs() {
pxe-ip=$(f2 'pxe-ip' 'ip')
}
的問題是檢測到錯誤的IP時,變量「PXE-IP」分配值「無效的IP」,因爲F2正在從叫subshell,是否有可能使用同一個shell中的參數調用函數?
您不能將它PXE的IP,而在同一個shell中運行它,即使在子shell中,它的運行方式也不應該有任何區別...... – 123
您可能應該將錯誤消息寫入stderr:'echo'無效IP'>&2'(以及閱讀sorontar的答案)。 –