运行含花括号组命令的bash脚本报unexpected end of file错误如何解决
报错原因
你遇到的报错是因为Bash的{ ... }命令组语法有严格的格式要求,你写的代码没有满足规则:
- 左大括号
{后必须紧跟空白字符(空格、换行均可) - 右大括号
}前必须有命令结束标识(分号;或者换行)
你的代码中两处命令组的右大括号前都没有加分号/换行,Bash解析时会认为命令组还没有结束,一直读到文件末尾都没找到匹配的结束标记,就抛出了unexpected end of file错误。
修正后的代码
#!/bin/bash { eval "nothing"; } || { echo "error" ; exit 1; } echo "something"
修正后运行脚本就会符合你的预期:eval "nothing"会因为找不到对应命令返回非0退出码,进而执行后面的逻辑输出error并退出,不会执行后续的echo "something"。
内容的提问来源于stack exchange,提问作者nbk
相关产品推荐
相关产品推荐

