2014-05-06 107 views
2

我一直在寫一些bash腳本,出於某種原因,曾經是工作代碼不再工作。我沒有做任何改變,但while true; do現在打破了我的bash腳本。雖然真的突破Bash

這是它的一部分。捕獲README.txt完美無瑕。終端正確地迴應「Test ...」,但只要它點擊「true」,它就會關閉,無論$ exec bash如何在完成後保持打開狀態。

#!/bin/bash 
cat README.txt 
echo 
echo 
sleep 2 
echo 
echo 
echo "Test..." 
sleep 3 
#The option to read the README.txt file above 
while true; do 
    read -p "Now is your chance to go back and read. 
Or press y/n to continue." yn 
    case $yn in 
     [Yy]*) break;; 
     [Nn]*) break;; 
     *) echo "Please answer yes or no.";; 
    esac 
done 
$exec bash 

任何幫助將不勝感激,因爲我開始認爲它可能不僅僅是一個代碼錯誤。

UPDATE

通過使用「慶典-x 111.sh」腳本運行之後,我收到錯誤消息

+ echo Test... 
Test... 
+ sleep 3 
111.sh: line 59: syntax error near unexpected token `)' 
111.sh: line 59: `  [Yy]* ) break;;' 

怎麼會出現意外的標記或語法錯誤很多其他的時候消息人士稱,事實上這是正確的,以及今天之前的工作。

+0

適合我。 –

+0

$ exec中有什麼? – choroba

+1

咦?你期望'$ exec bash'做什麼? –

回答

2

不知道爲什麼突然不起作用,但我用read -p替換了while循環的所有實例。

read -p 'Do you have (Program) installed? [y/n]' answer 
case "${answer}" in 
    [yY]|[yY][eE][sS]) 
     echo;; 
    [nN]|[nN][oO]) 
    apt-get install (program); echo;; 
esac 

這似乎工作更順暢,至今還沒有失敗。