Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在bash脚本中链接函数返回代码_Bash - Fatal编程技术网

如何在bash脚本中链接函数返回代码

如何在bash脚本中链接函数返回代码,bash,Bash,以下代码给出错误“foo:return:参数太多” 要求是: 我希望foo仅在f123返回非零返回值时执行f124 我希望foo返回使用非零返回代码成功执行的最后一个命令的返回值 如何在bash中实现这一点?您根本不需要返回;函数的退出状态是最后执行的命令的退出状态返回只需返回显式退出状态 foo() { f123 "hello" && f124 "world" } 如果f123失败(退出状态为非零),f124不执行,f123的退出状态用作foo的退出状态。如果f1

以下代码给出错误“foo:return:参数太多”

要求是:

  • 我希望foo仅在f123返回非零返回值时执行f124
  • 我希望foo返回使用非零返回代码成功执行的最后一个命令的返回值

如何在bash中实现这一点?

您根本不需要
返回
;函数的退出状态是最后执行的命令的退出状态<代码>返回只需返回显式退出状态

foo() {
    f123 "hello" && f124 "world"
}
如果
f123
失败(退出状态为非零),
f124
不执行,
f123
的退出状态用作
foo
的退出状态。如果
f123
成功,则执行
f124
,其退出状态(零或否)用作
foo
的退出状态


(如果您确实希望在
f123
失败时执行
f124
,则使用
|
而不是
&

您根本不需要
在此处返回
;函数的退出状态是最后执行的命令的退出状态<代码>返回
只需返回显式退出状态

foo() {
    f123 "hello" && f124 "world"
}
如果
f123
失败(退出状态为非零),
f124
不执行,
f123
的退出状态用作
foo
的退出状态。如果
f123
成功,则执行
f124
,其退出状态(零或否)用作
foo
的退出状态


(如果您确实希望在
f123
失败时执行
f124
,请使用
|
而不是
&

Bash在成功时返回0,但在函数中强制返回1。现在,双符号AND运算符&&表示:如果上一个命令成功,则执行,即返回0。如果坚持返回值大于0,则必须手动执行此操作

f123() { echo $1; return 1; }
f124() { echo $1; return 1; }
foo() {
    f123 "hello"
    r1=$?
    if [ "$r1" -gt 0 ] ; then
        f124 "world"
        r2=$?
        if [ "$r2" -gt 0 ]; then
            r1=$r2
        fi
    fi
    return $r1
}

Bash在成功时返回0,但在函数中强制返回1。现在,双符号AND运算符&&表示:如果上一个命令成功,则执行,即返回0。如果坚持返回值大于0,则必须手动执行此操作

f123() { echo $1; return 1; }
f124() { echo $1; return 1; }
foo() {
    f123 "hello"
    r1=$?
    if [ "$r1" -gt 0 ] ; then
        f124 "world"
        r2=$?
        if [ "$r2" -gt 0 ]; then
            r1=$r2
        fi
    fi
    return $r1
}


好啊但是,我如何做有效链接使用
false进行测试;foo$?
?祝你好运。点击尾随的
$?
(现在我更好地理解了你的代码)。Good luck.foo函数不接受任何参数。我看到你正在通过$?给福。它在干什么?你能详细说明一下吗?你能告诉我如何避免错误信息“foo:return:toomanarguments”?好的。但是,我如何做有效链接使用
false进行测试;foo$?
?祝你好运。点击尾随的
$?
(现在我更好地理解了你的代码)。Good luck.foo函数不接受任何参数。我看到你正在通过$?给福。它在干什么?你能详细说明一下吗?你能告诉我如何避免错误消息“foo:return:too many arguments”?foo()的返回值是多少?@chepner我不同意,它会按要求回复答案。|遵循bash逻辑,其中0表示成功。此外,代码冗长但正确。foo()的返回值是多少?@chepner我不同意,它会按要求回复答案。|遵循bash逻辑,其中0表示成功。此外,代码冗长但正确。谢谢。如果提供函数的返回值,函数的退出状态是否与函数的返回值相同?函数在shell中没有返回值。它们具有退出状态,可以写入标准输出,但不返回值。谢谢。如果提供函数的返回值,函数的退出状态是否与函数的返回值相同?函数在shell中没有返回值。它们具有退出状态,可以写入标准输出,但不返回值。