我想使用缩写if if else来判断ccze在使用之前是否存在...而且我只是不能让第一部分正确...
test() {
[ $(hash ccze) 2>/dev/null ] && echo "yes" || echo "no"
}
以上只是测试..我做错了什么? ccze是否存在无关紧要 - 我得到了"没有"
答案 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)
some_function() {
hash ccze &> /dev/null && echo "yes" || echo "no"
}
将函数重命名为其他函数,因为已经有命令test
。
不要覆盖。
删除方括号。即使在任何情况下,您想使用方括号,也可以使用双方括号。不推荐使用单方括号。