试图了解bash函数的返回值

时间:2019-04-28 22:15:10

标签: bash function return

我已经看过bash函数的返回值了,看来我还是不明白它是如何工作的。 我设置了3个函数,每个函数都应返回RET_VAL返回值。 我假设func_1根据if语句返回1或0 我假设func_2根据if语句返回1或0 我假设func_3应该根据func_2的返回值打印1或0

func_1() {
  RET_VAL=0
  if [ -d /tmp/dir ]; then
    echo "Dir exists" 
    RET_VAL=0
  else
    echo "Dir doesn't exist"
    RET_VAL=1
  fi
  return ${RET_VAL}
}

func_2() {
  RET_VAL=0
  if func_1; then
    if [ -f /tmp/file_1]; then
      echo "File exists"
    else
      echo "File doesn't exist"
      RET_VAL=1
    fi
  else
    RET_VAL=1
  fi
  return ${RET_VAL}
}

func_3() {
  if func_2; then
    echo "Dir and File do exist"
  else
    echo "Dir and file do not exist"
  fi
}

我的假设是否正确?或者每个函数都返回最后执行的内容,例如echo语句? 如果是这样,我如何确保这些函数返回1或0值?

干杯, 罗兰

1 个答案:

答案 0 :(得分:2)

func_3将不会显示func_2的返回值。 if语句将使用 func_2的退出状态来确定采用哪个分支。 每个命令都具有退出状态,因此在没有显式return命令的情况下,要执行的最后一条命令的退出状态将是函数的退出状态。对于func_3,退出状态将是执行任何echo命令的退出状态(实际上始终为0,没有任何I / O错误)。