bash switch-case 语句给出语法错误
Posted
技术标签:
【中文标题】bash switch-case 语句给出语法错误【英文标题】:bash switch-case statement gives syntax error 【发布时间】:2016-01-21 07:34:32 【问题描述】:#!/bin/bashecho "标题:" 阅读标题 回声“” 直到 [ -n "$title" ] 做 echo "请输入标题:" 阅读标题 回声“” 完毕 回声“作者:” 阅读作者 回声“” 直到 [ -n "$author" ] 做 echo "请输入作者:" 阅读作者 回声“” 完成
检查=
cat ./BookDB.txt | egrep -ie "\b""$title""\b" | egrep -ie "\b""$author""\b"
如果 [ -z "$check" ] 然后 echo "错误!书不存在!" #需要一些代码才能继续 别的 echo "找到书了!" 全部=cat ./BookDB.txt | grep -i "$title"
oldtitle=`echo "$all" | cut -d ":" -f1` oldauthor=`echo "$all" | cut -d ":" -f2` oldprice=`echo "$all" | cut -d ":" -f3` oldavail=`echo "$all" | cut -d ":" -f4` oldsold=`echo "$all" | cut -d ":" -f5`
fi 尽管 : 做 回声“” echo "a) 更新标题" echo " b) 更新作者" echo "c) 更新价格" echo " d) 更新可用数量" echo " e) 更新售出数量" echo " f) 返回主菜单" 回声“” echo -n "请输入您的选择:" 阅读选项
case $option in a ) echo -n "New title: " read newtitle if [ "$oldtitle" = "$newtitle" ] then echo "Title is the same as original" else all_title=`cut -f 1 -d ":" ./BookDB.txt` check=`echo "$all_title" | grep -i "\b""$newtitle""\b"` fi if [ -n "$check" ] then echo "Book title already exists." else sed -i "s/$oldtitle:/$newtitle:/g" ./BookDB.txt echo "Book title successfully updated." fi b ) esac done
我无法在 bash 上运行此代码。他们说我在这一行的 CASE 选择存在语法错误 b)
我觉得一点问题都没有
【问题讨论】:
尝试减少问题...创建一个最小的示例...all=cat ./BookDB.txt | grep -i "$title"
非常可疑。与缺少;;
的case
无关,但我认为您的意思是:all=$(grep -i "$title" ./BookDB.txt)
。该行上方还有另一个更大的示例。
【参考方案1】:
使用case语句时,每个子句都需要以;;
结束:
case $option in
a )
# do something
;;
b )
# do something
;;
esac
您可以阅读here 了解有关案例声明的更多详细信息。
【讨论】:
正确!非常感谢您在该链接上的指南以上是关于bash switch-case 语句给出语法错误的主要内容,如果未能解决你的问题,请参考以下文章