将参数传递给bash中的if语句中的函数
问题描述:
我想将参数传递给if语句中的函数,然后评估函数返回的内容(在bash中)。我得到的结果是不正确的。你如何正确地做到这一点?将参数传递给bash中的if语句中的函数
#!/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
不想要的结果:
[email protected]:~/work$ ./test.sh
0
entered 0
1
entered 0
预先感谢您。 〜克里斯
答
您可以return
从功能的结果,或使用$()
捕捉到它的输出:
if [ $(foo $arg) -eq 0 ] ; then
答
不知道你想做什么?
你foo()
函数总是返回成功后,使用return
。
您传递给您的foo()
函数第二个和第三个参数-eq 0
但它们不使用。你想检查退出状态吗?这只是if foo $arg; then ..; fi
。
答
你确定你需要你的函数来回显0或1吗?它看起来更像是你想要的东西像
foo() {
if [ $1 = "zero" ]; then
return 0
else
echo 1
fi
}
# Or even just simply foo() { [ $1 = "zero ]; }
arg="zero"
if foo $arg; then
echo "entered 0"
else
echo "entered something else"
fi
arg="blah"
if foo $arg; then
echo "entered 0"
else
echo "entered something else"
fi
非常感谢你! – user1117603 2013-02-17 10:02:00