将参数传递给bash中if语句中的函数

use*_*603 6 unix bash shell

我试图将参数传递给if语句中的函数,然后评估函数返回的内容(在bash中).我得到的结果是不正确的.你怎么做到这一点?

#!/bin/bash

foo() {
    if [ $1 = "zero" ]; then
        echo "0"
    else 
        echo "1"
fi
}

arg="zero"
if foo $arg -eq 0 ; then
    echo "entered 0"
else
    echo "entered something else"
fi

arg="blah"
if foo $arg -eq 0 ; then
    echo "entered 0"
else
    echo "entered something else"
fi
Run Code Online (Sandbox Code Playgroud)

不是预期的结果:

cknight@macbook:~/work$ ./test.sh
0
entered 0
1
entered 0
Run Code Online (Sandbox Code Playgroud)

先感谢您.〜克里斯

cni*_*tar 8

您可以return从函数中获得结果,也可以使用它$()来捕获其输出:

if [ $(foo $arg) -eq 0 ] ; then
Run Code Online (Sandbox Code Playgroud)