虽然真正打破了打击

时间:2014-05-06 22:53:19

标签: bash scripting while-loop

我一直在编写一些bash脚本,出于某种原因,过去使用的代码不再有效。我没有做任何更改,但while true; do现在打破了我的bash脚本。

这是其中的一部分。 Catting README.txt完美无缺。终端呼应"测试......"正确的,但一旦它击中"而真实"无论$ 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

任何帮助都会非常感激,因为我开始认为它可能不仅仅是代码错误。

更新

使用" bash -x 111.sh"运行脚本后,收到的错误消息是

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

当许多其他消息来源说这实际上是正确的,以及它在今天之前工作时,怎么会出现意外的令牌或语法错误。

1 个答案:

答案 0 :(得分:2)

不确定为什么突然之间不起作用,但我用read -p替换了while true循环的所有实例。

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

这似乎工作得更顺畅,至今还没有让我失望。