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

时间:2018-04-15 07:03:58

标签: 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
 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**

我在这里做错了什么?

1 个答案:

答案 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"
}