shell - 从 shell 脚本函数返回单个值

标签 shell return-value bash-function

例子:

#!/bin/sh

a() {
R=f
ls -1 a*
[ "$?" == "1" ] && { R=t; }
echo $R
}

r=`a`
echo $r

$r 包含 tf 以及 ls 命令的输出。

我可能会写ls -1 a* >/dev/null 2>/dev/null,但是如果有更复杂的脚本可能会导致错误。

有什么方法可以从 a() 返回单个值吗?

最佳答案

shell 函数可以返回一个数值。考虑 0 和 1 而不是 'f' 和 't'

#!/bin/sh

a() {
R=0
ls -1 a*
[ "$?" == "1" ] && { R=1; }
return $R
}

a
r=$?
echo $r

这仍然会写入 ls -1 a* 的输出,您可能仍想处理它,但是 r 的值将是 0 或 1,并且不会包含输出。

从一行或整个 block 重定向输出的其他示例很好,并且正如其他人所建议的那样,您应该了解其他测试条件的方法(但我假设 ls 是一个任意的例子)

关于shell - 从 shell 脚本函数返回单个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3139786/

相关文章:

shell - 在shell脚本中传递包含空格的参数

ios - 如何从iOS内部返回方法对象

bash - 如何在 bash 中创建秒表?

c++ - 为什么我不能在我的三元表达式中使用 return 但我可以在常规的 if-else 语句中使用?

bash - 从子 shell 返回值并输出到局部变量

linux - bash 脚本大小写切换

bash - 将文本文件中的额外列拆分为单独的行(保留第一列)

linux - awk - 非重复值表

Android adb shell ping - 此版本的 ping 不应以特权运行。中止

关闭句柄() :Return value check require