2017-09-19 62 views
0

產生的問題,我有一個程序,它是這樣:是否在條件循環多個讀取命令shell腳本

fun_a() 
{ 
    echo "other statement" 
    read user_input 
    if [[($user_input == "Y") || ($user_input == "y")]];then 
     fun_b 
    else 
     ...... 
    fi 
} 
fun_b() 
{ 
    echo "some other statement" 
    echo "any statement" 
    read user_inp 
    if [[($user_inp == "Y") || ($user_inp == "y")]];then 
    do something 
    else 
     .......... 
    fi 
} 
echo "any statement" 
read user_inp 
if [[($user_inp == "Y") || ($user_inp == "y")]];then 
    fun_a 
else 
    ...... 
fi 

我沒有得到預期從「讀」命令的輸出。是否因爲在下一個讀取語句被調用之前if塊沒有關閉?如果是這樣,建議一些解決方案

回答

0

你不需要每次都閱讀,而且你不需要在每個函數中檢查「Y」。如下面的腳本,你可以看到「閱讀」只需要一次。

#!/bin/bash 
fun_a() 
{ 
    echo 'function_a' 
    echo "Input: ";read content2 
    echo 'content2: ' $content2 
    echo 'content: '$content 
} 
echo "Input: "; read content 
echo 'content: '$content 
fun_a 

>>> ./script.sh 
Input: 
first 
content: first 
function_a 
Input: 
second 
content2: second 
content: first 
+0

埃裏克,需求是這樣的,除非用戶不想繼續,我們不應該繼續,目前的功能應該只調用用戶輸入的下一個功能。除了印刷一行外,還有很多東西。如果用戶i/p是Y,那麼正在生成的o/p正在被傳送到下一個功能。 – prince623

+0

然後,我會建議您創建一個更多功能 「如果[[($ user_input ==」Y 「)||($ user_input ==」y「)]] return XXX」 然後您可以簡單地使用返回值決定要做什麼。你知道如何修改嗎? – Eric