Shell语言用例

bash函数和脚本的返回值

2017-12-07  本文已影响25人  CodingCode

函数返回值

函数的返回值是一个数字, 范围是[0 - 255], 每一个函数都有返回值,或者

  1. 由显式的return语句指定, 后面跟一个[0-255]之间的数字, 或者
  2. 如果没有return语句,那么最后一条语句的返回值作为函数的返回值.

举例子说明:

#!/bin/bash

function foo1() {
    return 1
}

function foo2() {
    ls *.sh
}

function foo3() {
    ls *.ksh
}

foo1
echo "foo1 return $?"

foo2
echo "foo2 return $?"

foo3
echo "foo3 return $?"
$ ./test.sh 
foo1 return 1
test.sh
foo2 return 0
ls: cannot access *.ksh: No such file or directory
foo3 return 2

其中foo3 return 2这个2是"ls *.ksh"命令的返回值.

脚本的返回值

脚本的返回值和函数的返回值一样. 脚本的返回值也是一个数字, 范围是[0 - 255], 或者

  1. 由显式的exit语句指定, 后面跟一个[0-255]之间的数字, 或者
  2. 如果没有exit语句,那么最后一条命令的返回值作为脚本的返回值.

举例

$ cat t0.sh 
#!/bin/bash
exit 0
$
$ cat t1.sh 
#!/bin/bash
exit 1
$
$ cat t2.sh 
#!/bin/bash
ls *.ksh
$
$ cat t.sh
#!/bin/bash

./t0.sh
echo "t0 return $?"

./t1.sh
echo "t1 return $?"

./t2.sh
echo "t2 return $?"

运行结果:

$ ./t.sh 
t0 return 0
t1 return 1
ls: cannot access *.ksh: No such file or directory
t2 return 2

其中t2得返回值2就是最后一条命令"ls *.ksh"的返回值.

判断函数是否执行成功

有些时候我们需要判断一个函数是否成功, 来决定走不同的分支,

if funcall; then
  ...
else
  ...
fi

只要理解一点, 判断函数是否执行成功的依据是函数返回值是否为零, 是零表示成功, 非零表示失败. 看下面例子:

#!/bin/bash

function isOK1() {
    return 0
}

function isOK2() {
    return 100
}

if isOK1; then
  echo "isOK1 return true"
else
  echo "isOK1 return false"
fi


if isOK2; then
  echo "isOK2 return true"
else
  echo "isOK2 return false"
fi

运行结果如下:

$ ./test.sh 
isOK1 return true
isOK2 return false

判断命令是否执行成功

和判断函数是否执行成功一样

注意

函数内return指令和exit指令的区别

上一篇下一篇

猜你喜欢

热点阅读