Shell 从函数内的case语句向另一个函数返回值

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

我试图调用一个带有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**

我做错了什么??

在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;中断;;
以撒
完成
回显“$返回值”
}