2014-01-20 55 views
1

我有我的腳本顯示用戶的變量:如何添加IF ELSE到Linux可變

OWNER=$(grep 1000:1000: /etc/passwd|cut -f1 -d':') 

輸出將是這樣的:

joe 

這是正常的精安裝操作系統的服務器&用戶在安裝期間已安裝。我遇到了沒有初始用戶的vps問題。我想補充的變量如果爲空,則輸出應該是「根」,但我不知道從哪裏開始..

三江源

回答

1

爲什麼不檢查grep命令的返回值? 如果以root用戶身份返回1,否則 - cut其結果並使用它。

LINE="`grep 1000:1000: /etc/passwd`" 
[ $? -eq 0 ] && OWNER="`echo "$LINE"|cut -f1 -d":"`" || OWNER=root 
+0

如果你不想奇怪的擴展,你應該引用$ USER和$ LINE(例如,$ USER將永遠被回顯爲在單詞標記之間有1個空格,並且沒有前導或尾隨空格,不管它從命令輸出中有多少) – BroSlow

+0

@BroSlow感謝您的評論。現在修復。 – Michael

+0

Thankyou,完美的工作..完整的表達式可以在一行上,還是必須在2行上? – linuxnoob

4

像這樣的事情

[[ $OWNER == "" ]] && OWNER="root" 

if [[ $OWNER == "" ]]; then 
    OWNER="root" 
fi 
+0

Thankyou,有沒有辦法讓這個檢查全部包含在變量中?例如:'OWNER = $(grep 1000:1000:/ etc/passwd | cut -f1 -d':')[[$ OWNER ==「」]] && OWNER =「root」' – linuxnoob

+2

是:OWNER = $ ((grep 1000:1000:/ etc/passwd || echo「root」)| cut -f1 -d「:」) – lmsteffan

+0

@linuxnoob我喜歡Imsteffan的建議。或者,你可以在你的例子中的'''後面加一個';'。 – BroSlow