晚秋(lateautumn)
2024-04-27 10:27 Moderator
谢谢分享,只是我看不懂,如果有wps js的经验分享就好了
Reply Like 0 View the author
谢谢分享,只是我看不懂,如果有wps js的经验分享就好了
恕我直言,这写的漏洞百出,很多基本概念都没有搞懂。
恕我直言,这写的漏洞百出,很多基本概念都没有搞懂。
欢迎大佬指正
欢迎大佬指正
大可不必
大可不必
还是希望大佬多一点分享精神
bash的函数相比说是函数,不如理解成一段外部脚本
调用函数就相当于在调用另一个bash脚本
这样看用echo返回就是非常符合直觉的了
bash的函数相比说是函数,不如理解成一段外部脚本
调用函数就相当于在调用另一个bash脚本
这样看用echo返回就是非常符合直觉的了
有道理
这咋看都只是个shell脚本啊
连绑定到标准输出 或者 标准错误都没有
就是个代码片段
那不是想输出啥输出啥
光看标题还以为是能改变$?的内容呢
返回?
这不就是简单的输出吗?跟返回有什么关系。
要改变bash脚本结束时的返回值,用 exit
就好了,这讲的啥呀?
持续学习中。。。
Rankings
Popular Events
More
原文:https://itsfoss.com/bash-function-return-value/
csdn 同步: http://t.csdnimg.cn/fGXme
与其他编程语言不同,Bash 中的函数不返回任何值。相反,它返回退出状态或一个数字值(介于 1 和 255 之间),表示执行的成功或失败。
但问题在于如何让 Bash 函数返回值。
当然,如果我写这个教程,我必须有一个解决方案(或者说变通方法)来解决这个问题,但在此之前,让我们首先了解问题。
我们正在处理的问题 首先,让我分享一个简单的 C 程序,来解释编程语言如何通过 bash 函数返回值:
**如果你运行上面的 C 程序,它会返回 **
7
,如下所示:**在上面的 C 程序中,我创建了一个名为 **
add
的函数,它接受两个值,并使用 return 语句来相加这两个值。不幸的是,bash 中的函数不是这样工作的,它们给出的是函数中使用的最后一个命令的退出状态,退出状态可以是 0(成功)或非零(失败)。
**在 bash 中有一个特殊的变量 **
$?
用于获取退出状态。所以让我快速分享一下你可以如何使用它:**正如你所见,它返回 **
0
表示函数已成功执行!现在,让我们看看如何使 bash 函数返回值。
如何使 bash 函数返回一个值
有两种方法可以使 bash 函数返回一个值:
当然,这与在 C 或其他编程语言中返回值不同,但在许多情况下可能会对您有所帮助。
所以让我们从第一个开始。
方法 1:使用标准输出数据流
如果你不了解数据流,Linux 中有 3 种数据流:输入、输出和错误。每个都用于不同的任务。
如标题所示,在这种方法中我将使用 echo 或 printf 命令来使用标准输出数据流。
仍然感到困惑吗?简单来说,我将把函数的输出发送到标准输出数据流以打印输出(这就是 printf 或 echo 命令的用法所在)。
首先,让我分享一个 Bash 脚本:
当执行时,它将给出以下输出:
现在,让我们看看解释部分。
**首先,我创建了一个函数 **
demo
,其中有一个局部变量namaste
,其中包含我想要打印的字符串。**后来,我使用 echo 命令打印了 **
namaste
变量内的数据。**在接下来的部分中,我调用了 **
$()
概念内的函数,该函数将在子 shell 中执行demo
函数,并且输出被output
变量捕获。**最后,echo 命令被用来打印 **
ouptut
变量的捕获输出。** 相当容易。对吧?**
方法 2:使用全局变量
**默认情况下,bash 中的每个变量都是全局的,要使用局部变量,必须在分配任何值之前使用术语 **
local
。但问题是如何在 bash 函数中使用全局变量返回值。好吧,让我展示一个简单的 bash 脚本,用于此目的使用全局变量:
以上脚本简单地向当前登录的用户问候,当您执行以上脚本时,您可以期望以下输出:
现在,让我们分解脚本。
**首先,声明了空的全局变量 **
output
。**然后,创建了一个名为 **
generate_greeting
的函数,它接受一个参数name
,在接下来的一行中,将带有用户名的问候文本分配给了output
变量。**接下来,脚本将调用函数 **
generate_meeting
并使用$USER
参数来获取当前登录用户的名字。**最后,使用 echo 命令打印了全局变量 **
output
的值。是的,这就是在 bash 中使用全局变量使函数返回值所需的全部。
该使用哪种方法?(在我看来)
我个人不喜欢使用全局变量来使 bash 函数返回一个值,而且有一个简单的原因。
全局变量的特性是可以在脚本的任何地方进行访问和修改,这可能会引起麻烦,特别是如果脚本很复杂,并且可能在用户之间发生变化。
我建议使用第一种方法,它利用标准输出数据流。
希望你会觉得这个指南有用。