当我运行以下命令时:
if [ $(vboxmanage list vms | grep -c "all-in-one-1.2.7-wizard") > 0 ]; then
echo 'yes'
else
echo 'no'
fi
在当前目录中创建0
文件:
$ ll
...
-rw-rw-r-- 1 abc abc 0 Nov 19 17:33 0
知道为什么会这样吗?
答案 0 :(得分:6)
您没有进行整数比较,而是将命令$()
的输出重定向到0
,因此创建了一个名为0
的文件。
此外,if条件的当前“分辨率”基于条件的执行结果。如果成功,则执行条件。
相反,请使用-gt
(g
reater t
han):
if [ $(vboxmanage list vms | grep -c "all-in-one-1.2.7-wizard") -gt 0 ]; then
^^
echo 'yes'
else
echo 'no'
fi
您可以通过执行>7
或其他任何操作来确保这是行为,并查看创建的文件7
(或其他)。
else
条件何时执行?如果您无法重定向:
$ [ $(ls /root) > 3 ] && echo "yes" || echo "no"
ls: cannot open directory /root: Permission denied
no
请参阅Numeric comparison以获取所有可能的整数比较列表。