2013-04-20 197 views
0

它我的計劃的一部分,Case語句不工作

output="$(./t1)"  // output=5 

echo $output   // It displays 5 

if test $output -eq 5 
then 
echo "five"    // this if statement works and displays 'five' 
fi 

case $output in   **// this case is not working and giving just default value** 

1) echo "one" ;; 

2) echo "two" ;; 

3) echo "three" ;; 

4) echo "four";; 

5) echo "five";; 

*) echo "wrong choice" ;; 

esac     // output is wrong choice though it works proper in if statement 

有沒有在我的bash腳本的任何錯誤? 請幫忙。

+0

很奇怪。在我的bash中,你的程序可以正常工作5,5,5。 (Ofc,我刪除了所有非法的//註釋)。 – jm666 2013-04-20 20:17:00

回答

0

這個工作對我來說:

output=$(./t1) 
echo $output 
if test $output -eq 5; then echo "five"; fi 
case $output in 
    1) echo "one" ;; 
    2) echo "two" ;; 
    3) echo "three" ;; 
    4) echo "four";; 
    5) echo "five";; 
    *) echo "wrong choice" ;; 
esac 

當你有"周圍$(./t1)的結果是一個字符串,而不是一個數值。這與test,但不是case。此外,您在帖子中有幾個缺少;//對bash中的評論無效。

+0

嘗試:'a =「5」;在5)情況下$ a)echo「five」;; *)echo「other」;; esac;'會打印「五」。而';'只有當整體如果是一行時才需要(如你的答案)。用戶在他的任務中使用的構造是完全合法的。使用'//'是問題。 – jm666 2013-04-20 20:29:49