美文网首页Shell语言用例
bash函数和脚本的返回值

bash函数和脚本的返回值

作者: CodingCode | 来源:发表于2017-12-07 14:33 被阅读25次

函数返回值

函数的返回值是一个数字, 范围是[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 $?"
  • 函数foo1由显式的return语句指定返回1.
  • 函数foo2没有return语句, 它将返回"ls *.sh"的返回值.
  • 函数foo3没有return语句, 它将返回"ls *.ksh"的返回值.
    如果当前目录下有.sh文件,而没有.ksh文件,那么会得到如下运行结果:
$ ./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
  • 函数isOK1的返回值为0, bash认为调用成功.
  • 函数isOK2的返回值为100, bash认为调用失败.

判断命令是否执行成功

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

注意

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

  • return只能在函数内部使用, 不能在函数外使用.
  • exit指令可以在函数内,也可以在函数外使用.
  • return从当前函数返回, 返回到调用者,继续往下执行.
  • exit从当前函数退出, 并直接退出当前进程, 返回父进程.
    • 注意是退出一个当前进程, 而不是退出整个调用链, 我们知道shell里面每一个脚本都是在一个独立的进程空间里面运行的, 所有exit命令只是退出exit命令所在脚本的进程, 然后从调用者脚本继续往下执行.

相关文章

  • bash函数和脚本的返回值

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

  • 2018-06-14 bash脚本定时同步alta转化到api系

    bash脚本里直接使用函数或者alias的好处:灵活。 当你觉得需要修改时,直接修改函数和alias,脚本不需要重...

  • 脚本的基本用法

    目录 什么是脚本写一个脚本(git bash)参数判断目录是否已存在返回值用Node.js 写脚本关于sheban...

  • shell函数定义和引用

    shell脚本中函数的定义和使用 Bash(Bourne Again shell)跟其他编程语言一样也支持函数,一...

  • Linux命令行与Shell脚本编程大全-创建函数

    本章内容: 基本的脚本函数 返回值 在函数中使用变量 数组变量和函数 函数递归 创建库 在命令行中使用函数 创建函...

  • 第1节 shell脚本创建执行和输出

    #shell脚本创建执行和输出 1.shell脚本开头 #!/bin/bash /bin/bash 是Ba...

  • python 函数进阶

    函数进阶 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的...

  • python 函数进阶

    函数进阶 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的...

  • Python函数高阶

    函数进阶 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的...

  • 17 函数进阶

    函数进阶 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的...

网友评论

    本文标题:bash函数和脚本的返回值

    本文链接:https://www.haomeiwen.com/subject/lfmdixtx.html