我一直在编写一些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;;'
当许多其他消息来源说这实际上是正确的,以及它在今天之前工作时,怎么会出现意外的令牌或语法错误。
答案 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
这似乎工作得更顺畅,至今还没有让我失望。