Bash脚本执行报错:syntax error near unexpected token `)' 求助
排查Bash case语句的语法错误
嘿,作为Bash新手碰到这种语法问题很正常,我帮你拆解一下这个错误的原因:
核心错误点
- 每个case分支必须用
;;终止:Bash的case语法要求每个匹配到的分支代码块末尾必须加上;;,用来标记该分支处理结束,否则shell无法识别分支边界。你的darwin*)和linux*)分支都漏掉了这个关键标记。 - 缺少
case语句的闭合标记esac:case语句的结构是case ... in ... esac,esac是case的反向拼写,用来闭合整个语句块。你的脚本完全没写这个,这就是触发syntax error near unexpected token ')'的主要原因。 - 命令分隔不规范:在
linux*)分支里,make clean和make -j4需要和前面的cmake命令明确分隔开(要么换行缩进,要么用分号分隔),否则shell会把它们误判为cmake的参数。
修正后的完整脚本
case "$OSTYPE" in darwin*) cmake . -DPLATFORMTARGET=x64 -DCMAKE_BUILD_TYPE=DEBUG -DCMAKE_OSX_DEPLOYMENT_TARGET=10.11 -DCMAKE_PREFIX_PATH="/Users/$(whoami)/Qt/5.10.1/clang_64/lib/cmake" ;; linux*) cmake . -DPLATFORMTARGET=x64 -DCMAKE_BUILD_TYPE=DEBUG -DCMAKE_PREFIX_PATH="/Users/$(whoami)/Qt/5.10.1/gcc_64/lib/cmake" make clean make -j4 ;; esac
额外小提示
为了可读性,建议把每个分支的命令缩进一下,这样后续维护脚本的时候更容易区分不同平台的逻辑~
内容的提问来源于stack exchange,提问作者Taylor Alderson
相关产品推荐
相关产品推荐

