Shell 从函数内的case语句向另一个函数返回值
我试图调用一个带有case语句的函数,当用户输入1时,这将向调用函数返回一个值1,然后调用函数继续根据返回值执行进一步的命令Shell 从函数内的case语句向另一个函数返回值,shell,switch-statement,Shell,Switch Statement,我试图调用一个带有case语句的函数,当用户输入1时,这将向调用函数返回一个值1,然后调用函数继续根据返回值执行进一步的命令 #!/bin/bash continue_exec () { return_value=0 select yes_no in "Yes" "No"; do case $yes_no in Yes ) return_value=1;break;; No ) return_value=2;break;; esac d
#!/bin/bash
continue_exec () {
return_value=0
select yes_no in "Yes" "No"; do
case $yes_no in
Yes ) return_value=1;break;;
No ) return_value=2;break;;
esac
done
return $return_value
}
dev_func () {
exec_status=$( continue_exec )
if [ "$exec_status" -eq 1 ]; then
echo "data load"
else
echo "do not load."
fi
}
dev_func
但是得到下面的错误
**line 18: [:integer expression expected**
我做错了什么??在shell脚本中
return
语句负责返回状态。您可以在调用函数的下一个位置使用
$?
捕捉状态
#/bin/bash
继续执行{
返回值=0
在“是”“否”中选择是\否;执行
案例$yes\u no in
是)返回_值=1;中断;;
否)返回_值=2;中断;;
以撒
完成
返回$return\u值
}
开发功能(){
继续执行
执行状态=$?
如果[“$exec_status”-等式1];则
回显“数据加载”
其他的
echo“不加载”
fi
}
开发职能
但本例使用的是echo
。您可以找到下面的代码段,并保持dev_func
函数不变
continue\u exec(){
返回值=0
在“是”“否”中选择是\否;执行
案例$yes\u no in
是)返回_值=1;中断;;
否)返回_值=2;中断;;
以撒
完成
回显“$返回值”
}