1

编码处女需要帮助 - 一旦安装包 pv ,此代码总是这样做else而不是then. 为什么?

# First check if pv package is installed, if not, install it first
PACKAGESTATUS=`dpkg -s pv | grep Status`;

if [[ $PACKAGESTATUS == S* ]]
   then
      echo "Package 'pv' is installed."
   else
      echo "Package 'pv' is NOT installed."
      echo "Installing package 'pv'. Please wait..."
      apt-get -y install pv
fi

raspbian/2013-02-09注意它是备份运行 Raspbian wheezy和 pv 版本的树莓派的备份脚本的一部分,1.2.0作者不可用。

谢谢。

4

2 回答 2

1

无需捕获dpkg | grep管道的输出,只需检查其退出状态:

if dpkg -s pv | grep -q Status; then
   then
      echo "Package 'pv' is installed."
   else
      echo "Package 'pv' is NOT installed."
      echo "Installing package 'pv'. Please wait..."
      apt-get -y install pv
fi

-q选项 to用于抑制任何匹配行的grep输出,因为您不需要查看它们。

于 2013-03-22T12:48:28.443 回答
1

由于双“then”,chepners 的答案中有一个小的语法错误。

这个版本我运气更好

if `dpkg -s pv | grep -q Status;`
   then
      echo "Package 'pv' is installed."
   else
      echo "Package 'pv' is NOT installed."
      echo "Installing package 'pv'. Please wait..."
      apt-get -y install pv
fi
于 2013-09-04T20:41:53.157 回答