测试程序是否存在于Bash Script中 - 缩写版本

时间:2017-09-01 11:41:37

标签: bash if-statement

我想使用缩写if if else来判断ccze在使用之前是否存在...而且我只是不能让第一部分正确...

test() {
    [  $(hash ccze) 2>/dev/null ] && echo "yes"  || echo "no"
}

以上只是测试..我做错了什么? ccze是否存在无关紧要 - 我得到了"没有"

4 个答案:

答案 0 :(得分:1)

谢谢你,但这是我想要的一个班轮。我知道该版本有效。

与此同时我们想出来了......

test() { [ -x "$(command -v cckze)" ] && echo "yes" || echo "no"; }

非常感谢。

答案 1 :(得分:1)

testcmd () {
    command -v "$1" >/dev/null
}

使用它:

if testcmd hello; then
    echo 'hello is in the path'
else
    echo 'hello is not in the path'
fi

testcmd man && echo yes || echo no

或者你可以把那个放到一个函数中:

ptestcmd () {
    testcmd "$1" && echo 'yes' || echo 'no'
}

通过这种方式,您将拥有一个执行测试的功能,以及一个根据测试结果执行打印的独立功能。然后你可以使用适合的情况(你可能并不总是想要输出)。

答案 2 :(得分:0)

test() #(not a good name)
{
    if hash ccze 2>/dev/null; then
       echo yes
    else 
       echo no
    fi
}

应该这样做。

command -v ccze >/dev/null也是可用且相当便携的(不是POSIX,但适用于大多数shell)。

答案 3 :(得分:0)

建议#1 - 回答

some_function() {
  hash ccze &> /dev/null && echo "yes" || echo "no"
}

建议#2

将函数重命名为其他函数,因为已经有命令test

不要覆盖。

建议#3

删除方括号。即使在任何情况下,您想使用方括号,也可以使用双方括号。不推荐使用单方括号。

脑食物