我试图调用一个具有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
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**
我在这里做错了什么?
答案 0 :(得分:1)
在shell脚本return
语句中负责返回状态
您可以在调用函数的位置使用$?
来捕获状态。
#!/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 () {
continue_exec
exec_status=$?
if [ "$exec_status" -eq 1 ]; then
echo "data load"
else
echo "do not load."
fi
}
dev_func
但是这种情况使用echo
代替。您可以在下方找到该代码段,并保留dev_func
功能。
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
echo "$return_value"
}