2014-11-04 91 views
-3

是程序shell腳本,如果elif的使用需要建議如下

priority="P1" 
if [ $priority=="P3" ] 
then 
    altprt=l5 
elif [ $priority=="P2" ] 
then 
    altprt=l4 
elif [ $priority=="P1" ] 
then 
    altprt=l3 
fi 
echo $altprt 
+1

歡迎堆棧溢出。請儘快閱讀[**關於**](http://stackoverflow.com/tour)頁面,並訪問描述[**如何提出問題**]的鏈接(http://stackoverflow.com/questions /如何對問)。提供必要的詳細信息,包括您的代碼以及相關的錯誤(如果有的話),將允許大家在這裏幫助您解決問題。哪個提出了一個好點**你的問題是什麼?** – 2014-11-04 03:16:04

+0

需要操作符和操作數之間的空格。 – 2014-11-04 03:18:39

回答

0

如果你的問題是爲什麼不這項工作?答案是(1)你沒有引用變量和(2) constuct [使用與測試單=(3)作爲jackmann先生所指出的,你需要你的周圍空間測試結構:

priority="P1" 
if [ "$priority" = "P3" ] 
then 
    altprt=l5 
elif [ "$priority" = "P2" ] 
then 
    altprt=l4 
elif [ "$priority" = "P1" ] 
then 
    altprt=l3 
fi 
echo "$altprt" 

輸出:

l3 

您也可以找到使用compound expressions允許具有相同的結果更緊湊的代碼:

priority="P1" 
[ "$priority" = "P3" ] && altprt=l5 
[ "$priority" = "P2" ] && altprt=l4 
[ "$priority" = "P1" ] && altprt=l3 
echo "$altprt" 

最後,你也可以使用case來達到相同的結果:

priority="P1" 
case "$priority" in 
    "P3") altprt=l5;; 
    "P2") altprt=l4;; 
    "P1") altprt=l3;; 
esac 
echo "$altprt" 
+0

感謝這工作像魅力....感謝一羣大衛 – user3263739 2014-11-04 07:16:56

+0

很高興我能幫上忙。如果它有效,您可以通過點擊答案左上方的「接受」框來「接受」答案。 Bash是一個驚人的外殼。你可以在其中做任何事情,幾乎可以用任何高級編程語言來做。如果需要在一個Linux機器上完成,你很可能用bash來完成。花時間瞭解字符串解析,模式匹配和子字符串提取的更精細的點,你會驚訝於你能做什麼。 – 2014-11-04 13:21:40