查看 shell 脚本的代码,我发现在一行中进行了更改:
注意:如果代码包含错误,那是因为我已经删除了试图将其减少到最低限度以说明问题的内容。原始代码可以正常工作。
#!/bin/bash
if [ "$#" -eq 0 ]; then
echo "Error: se necesita al menos un argumento"
exit 1 # originariamente "return 1"
fi
return 0
他exit 1
原本是一个return 1
。我不太明白为什么将 the 更改return 1
为 a exit 1
,而不是更改为return 0
a exit 0
。在这种情况下,两者之间会有什么区别吗?
return
Bash和Bash有什么区别exit
?什么时候应该使用它们?
在 Bash 中,a
return
只能在函数内部或我们将要执行的文件中使用source
。在这些情况下,它与 具有相同的值exit
,即退出并返回可以使用 检索的状态码$?
。那么,在您的代码中,正确的做法是将两者
return
都转换为exit
,因为目前脚本无法正常工作。特别是,如果我们使用参数执行它,它会返回错误:与其他语言相反,Bash 没有
return
在函数中使用的用法。这是因为使用管道的本质:一个命令将内容返回到下一个命令。这样,所做的就是通过例如a返回,echo
然后通过执行以下命令来收集它$()
:POSIX 规范
return
警告我们:所以 Bash 决定 a
return
不能在点函数或脚本之外工作(即,通过做 asource
)。其他 shell 使用其他方法(参考)。在 Bash 中,
return
和exit
是同义词,如Bash 参考手册 → 定义中所述:后来他在Shell 函数中解释:
一些例子:
执行这个我们得到它
$?
的值是 23。