如何在bash脚本的if子句中使用bash函数返回的值?

时间:2016-02-02 10:04:22

标签: bash

解释

以下是脚本及其内容的输出

>> cat /ocpkg/test-1.sh
#!/bin/bash
foo() {
    if [[ 1 -eq 1  ]]; then
        return 0
    else
        return 1
    fi
}

foo
echo "foo function call output = $?"

if [[ $(foo) ]] ; then
    echo "return has value 0 so doing something"
else
    echo "return has value 1 so doing another thing"
fi

>> /ocpkg/test-2.sh 
foo function call output = 0
return has value 1 so doing another thing
>> cat /ocpkg/test.sh 
#!/bin/bash
foo() {
    if [[ 1 -eq 0  ]]; then
        return 0
    else
        return 1
    fi
}

foo
echo "foo function call output = $?"

if [[ $(foo) ]] ; then
    echo "return has value 0 so doing something"
else
    echo "return has value 1 so doing another thing"
fi

>> /ocpkg/test-2.sh 
foo function call output = 1
return has value 1 so doing another thing

如上面的输出所示,无论foo函数的返回值如何,脚本的最终输出都是return has value 1 so doing another thing

问题

当函数使用return命令返回值时,如何使用if子句中函数的返回值?

1 个答案:

答案 0 :(得分:1)

只做

if foo; then

这样您就可以使用foo的退出代码。使用$(),您正在使用foo {s}来编辑sysout的内容。