如何在shell脚本函数中返回值?

时间:2016-06-17 07:21:38

标签: linux shell unix

这是我的功能

  validateFile()
  {
    echo "$1" | grep '.zip$' > /dev/null 
    if [ $? -eq 0 ]
    then
        return 1
    else
        return 0
     fi 
  }
  printf "\n Enter Source File1 Path: "
  read file1
  res=$(validateFile $file1);
  echo "$res"

But nothing store in **"res"** store nothig

validateFile函数验证文件是否为zip文件,如果是,则返回2 else 0.并返回存储在res变量中的值。但问题是res变量中没有值存储。

4 个答案:

答案 0 :(得分:1)

虽然shell脚本提供了一个return语句,但是你唯一可以返回的是函数自己的退出状态(0到255之间的值,0表示“成功”)。 返回值的最佳方法是echo,如下所示:

validateFile()
  {
    echo "$1" | grep '.zip$' > /dev/null 
    if [ $? -eq 0 ]
    then
        echo 1
    else
        echo 0
    fi 
  }
printf "\n Enter Source File1 Path: "
read file1
res=$(validateFile $file1);
echo "$res"

答案 1 :(得分:1)

你想要的可能是

validateFile()
  {
    echo "$1" | grep '.zip$' > /dev/null 
    if [ $? -eq 0 ]
    then
        # return appropriate value
        return 1
    else
        return 0
    fi 
  }
printf "\n Enter Source File1 Path: "
read file1
# call function
validateFile $file1
# use return code
res=$?
echo "$res"

答案 2 :(得分:0)

$(...)调用子shell并捕获其标准输出。所以你可以做以下两件事之一:

foo() {
  fooresult=1
}
foo
echo $fooresult

或者这个:

foo() {
  echo 1
}
fooresult=$(foo)
echo $fooresult

答案 3 :(得分:0)

<input class="cb" id="rd" type="checkbox">
<input class="cb" id="fd" type="checkbox">

var fd=$('.cb#fd').is(':checked');
var rd= $('.cb#rd').is(':checked');