Bash中的函数与其他语言中的函数不同;它们实际上是命令。因此,函数的使用就好像它们是从您的路径中获取的二进制文件或脚本一样。从程序逻辑的角度来看,应该没有任何区别。Shell命令是通过管道(也称为流)连接的,而不是像“真实”编程语言中那样的基本或用户定义的数据类型。没有像命令的返回值这样的东西,可能主要是因为没有真正的方法来声明它。它可能出现在手册页或--help命令的输出中,但两者都是人类可读的,因此会随风而逝。当命令想要获取输入时,它将从其输入流或参数列表中读取该命令。在这两种情况下,都必须解析文本字符串。当命令想要返回某些内容时,它必须将echo其返回到其输出流。另一种常用的方法是将返回值存储在专用的全局变量中。写入输出流更清晰,更灵活,因为它还可以接收二进制数据。例如,您可以轻松返回BLOB:encrypt() { gpg -c -o- $1 # encrypt data in filename to stdout (asks for a passphrase)}encrypt public.dat > private.dat # write function result to file正如其他人在该线程中编写的一样,调用者也可以使用命令替换$()来捕获输出。并行地,该函数将“返回” gpg(GnuPG)的退出代码。将退出代码视为其他语言所没有的奖励,或者视您的性格而定,将其作为shell函数的“ Schmutzeffekt”。按照惯例,此状态为0表示成功,否则为1-255范围内的整数。为了明确起见:(return如exit)只能接受0-255之间的值,而0以外的值不一定是错误的,正如经常断言的那样。当您不提供显式值时return,状态取自Bash语句/函数/命令中的最后一条命令,依此类推。因此,总有一种状态,return这只是提供状态的一种简便方法。