2016-09-18 26 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