2014-05-06 7 views
2

Я писал несколько сценариев bash, и по какой-то причине работающий код больше не работает. Я не внес никаких изменений, но while true; do теперь разбивает мой скрипт bash.Хотя true Breaking Bash

Вот его часть. Catting README.txt работает безупречно. Терминал эхо «Test ...» правильно, но как только он нажимает «while 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

Не знаю, почему это внезапно не работает, но я заменил все экземпляры цикла while, когда read -p.

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 

Это, кажется, работает намного плавнее и пока не подвело меня.

Смежные вопросы