我对bash不太熟悉。我有一个场景,我正在调用一个带有一些参数的函数,并将返回值赋给变量。
以下是示例代码:
frame.getContentPane()
问题是当检测到错误的IP时,变量'pxe-ip'被赋值为'无效IP',因为 f2 是从子shell 调用的,是否可以在同一个shell中使用参数调用函数?
答案 0 :(得分:1)
我建议下一个解决方案:
下一个代码是怎么样的(我很难理解你尝试做什么)但是你正在寻找的是近似的代码:
#
# f(IP_to_check)
# return true | false
function f1(){
local IP_TO_CHECK="$1"
if [[ "$IP_TO_CHECK"=~ "$IP_REGEX" ]]
then
return 0
else
echo 'Invalid IP'
return 1
end
}
function f2() {
# read ip from json file using jq
# validate ip by calling f1 if second argument is 'ip'
# f1 <ip>
local MY_FIRST_PARM="$1"
local MY_SECOND_PARAM="$2"
if [ "$MY_SECOND_PARAM" == "ip" ]; then
# do whatever
# call your function f1
f1 $PXE_IP
# If not OK-> IP invalid
if [ $? -eq 0 ] ; then
export PXE_IP="IP Invalid"
fi
fi
}
function read_all_configs() {
f2 'pxe-ip' 'ip'
# After call f2 if IP is invalid global Var PXE_IP="IP Invalid"
}
答案 1 :(得分:1)
您只需调用该函数即可修改变量:
f1() { if [[ $1 =~ $IP_REGEX ]]; then
pxe_ip=ip
return 0
else
pxe_ip='Invalid IP'
return 1
fi
}
function read_all_configs() {
if f1 'ip'; then
# do what is needed with a valid value of ip
echo "$pxe_ip"
else
# do what is needed with an invalid ip.
echo "$pxe_ip"
fi
}
答案 2 :(得分:0)
您可以将函数用作f2(IP_REGEX)作为