Ale*_*lls 17 bash shell-script bash-functions
假设我有一个像这样的 bash 函数:
gmx(){
echo "foo";
}
Run Code Online (Sandbox Code Playgroud)
这个函数会隐式返回echo命令的退出值,还是需要使用返回值?
gmx(){
echo "foo";
return $?
}
Run Code Online (Sandbox Code Playgroud)
我假设 bash 的工作方式,bash 函数的最终命令的退出状态是“返回”的状态,但不是 100% 确定。
Kus*_*nda 15
return从 shell 函数或“点脚本”(源脚本)执行显式返回。如果return未执行,则在 shell 函数或点脚本的末尾进行隐式返回。
如果return不带参数执行,相当于返回最近执行的命令的退出状态。
这就是return在所有 POSIX shell 中的工作方式。
例如,
gmx () {
echo 'foo'
return "$?"
}
Run Code Online (Sandbox Code Playgroud)
因此等价于
gmx () {
echo 'foo'
return
}
Run Code Online (Sandbox Code Playgroud)
这与
gmx () {
echo 'foo'
}
Run Code Online (Sandbox Code Playgroud)
一般来说,您很少需要使用它$?。只有当您需要保存它以备将来使用时才真正需要它,例如,如果您需要多次调查其值(在这种情况下,您会将其值分配给一个变量并对该变量执行一系列测试)。
从bash(1)手册页:
执行时,函数的退出状态是函数体中执行的最后一个命令的退出状态。
| 归档时间: |
|
| 查看次数: |
12047 次 |
| 最近记录: |