2016-09-18 98 views
-2

我写了一个小脚本来检查更新。 我在寻找它的输出1 3的答案:Bash脚本在Updates语句中返回正确的值

  1. 如果没有更新,返回“您的系统是最新的”
  2. 如果只有一个更新缴费,返回“有1个更新可用”
  3. 如果有多个更新,返回‘有$ NUMOFUPDATES更新可用’

这是我到目前为止有:

#!/bin/bash 
# Check for Updates 

# Variables 

NUMOFUPDATES=$(LANG=C apt-get upgrade -s |grep -P '^\d+ upgraded'|cut -d" " -f1) 
UPDATEY1="There is 1 Update available" 
UPDATEY2="There are $NUMOFUPDATES Updates available" 
UPDATEN="Your system is up to date" 

if [ $NUMOFUPDATES -gt 0 ]; then 
    echo "\${color3}"$UPDATEY2 # Number of updates available 

elif [ $NUMOFUPDATES -eq 1 ]; then 
    echo "\${color3}"$UPDATEY1 # Number of updates available 

else 
    echo "\${color2}"$UPDATEN # System is up to date 
fi 

exit 0 

什么也没有做,正显示出如果只有1次更新,它不返回“有1个更新可用”它返回“有$ NUMOFUPDATES更新可用”

我觉得我接近解决方案。有人能帮我找到解决办法吗?

谢谢。

+0

'$ NUMOFUPDATES -gt 0'为1更新为真,1大于0.所以第一个if被执行。 –

+0

1当然是'-gt 0',所以'elif'永远不会发生。投票结束如同微不足道。 – tripleee

+0

你为什么不使用'case $ NUMOFUPDATES'? – Barmar

回答

1

1大于0.将if语句更改为if [ $NUMOFUPDATES -gt 1 ]; then

+0

谢谢你,知道我很亲密,最后还是做了一个小小的改变。 – valtam