2014-02-09 98 views
0

我正在寫一個劇本,和計劃。這有點像尋寶遊戲。該腳本基本上迎合用戶,並向用戶提供有關如何繼續的說明。Shell腳本和它是交互式用戶輸入

所述指令涉及到一系列的密碼(用戶輸入),將基於使用哪個密碼上揭示的某些信息。我計劃使用休息上取決於日期的密碼之一。

我會離開的代碼進行評估,但我只是問什麼是這樣做的正確的方式(什麼樣的循環,並與語法的幫助不大。)

#!/bin/bash 
echo "Welcome User"; sleep 2; 
echo "Random greeting and intro to the game" 
select yn in "Yes" "No"; do 
    case $yn in 
     Yes) echo "Are you ready to play?"; break;; 
     No) echo "Then get ready";; 
    esac 
done 

echo "Please enter your first password" 

有是使用作爲:字段分隔與遊戲一起使用的單獨的文件。我想知道什麼是循環的要求輸入密碼的正確方法,並根據輸入什麼執行。

我在找一些簡單的讀取用戶輸入並根據是否匹配其他文件執行的指令集(針對每個密碼),並且一旦進入最後一個密碼它完成。我在猜測,閱讀,如果和或類似的東西。

回答

0

要讀取行的用戶輸入的入變量$foo,寫:

IFS= read -r foo 

(該IFS=告訴它不存在字段分隔符,因此它不應該丟棄任何空白;所述-r告訴它。這反斜線應被視爲文字反斜槓)

你的循環可能會是一個「永遠」循環,這意味着它循環,直到它遇到break聲明:

while true ; do 
    ... 
    if ... ; then 
     ... 
     break  # jump out of the loop 
    fi 
    ... 
done 

我不知道你的意思是「是否[用戶輸入]匹配其他文件」—它聽起來像另一個文件是非常複雜的,字段分隔符等等—但你很可能想要閱讀將另一個文件存儲到內存中,將其字段存儲在相應的變量中:

IFS=: read -r field1 field2 field3 < the_other_file 
+0

我在想類似的東西,我在想它,並用它寫了一部分 –