我正在尝试编写一个比较命令输出并运行循环的函数,直到它不返回任何内容。当我运行它时,它的行为就像条件没有得到满足而且脚本永远停留在while循环中,即使我在提示符下运行命令它也不会返回任何内容。任何帮助是极大的赞赏。机器是Mac OS 10.9,这就是为什么su的语法有点时髦。
stopvm ()
{
su macadmin -c "VBoxManage controlvm tjfog acpipowerbutton"
while [`su macadmin -c 'VBoxManage list runningvms | grep tjfog'` != ""]
do
echo "Waiting for the VM to shutdown"
sleep 3
done
}
在提示符下运行会返回以下内容。
bash-3.2# su macadmin -c VBoxManage list runningvms | grep tjfog
bash-3.2#
谢谢!
答案 0 :(得分:3)
[ and ]
在[
之后和]
之前需要空格。
但您可以将while
条件重写为:
while su macadmin -c 'VBoxManage list runningvms | grep -q tjfog'
do
echo "Waiting for the VM to shutdown"
sleep 3
done