为什么会出现unexpected token错误,`echo`附近语法报错如何解决?
报错原因排查与修复方案
syntax error near unexpected token \echo` 是典型的Shell脚本语法错误,由if`分支结构不符合语法规范触发。
核心问题
Shell的if判断有固定语法要求,条件判断语句后必须紧跟then关键字,二者要么同行用;分隔,要么then单独占一行。代码中在if [ $? -ne 0 ]后直接写了echo语句,缺少then关键字,Shell解析到echo时无法匹配预期的语法结构,就会抛出该错误。
正确语法参考
# 写法1:条件与then同行,用;分隔 if [ 条件判断参数 ]; then 执行逻辑 fi # 写法2:then单独占一行 if [ 条件判断参数 ] then 执行逻辑 fi
修复示例
假设原错误代码如下:
# 错误写法 if [ $? -ne 0 ] echo "脚本执行失败" exit 1 fi
调整后可正常运行的写法:
if [ $? -ne 0 ]; then echo "脚本执行失败" exit 1 fi
其他排查点
- 确认
if分支对应的结束标识fi没有缺失,所有分支关键字必须成对出现 - 确认
[ ]的左右两侧都有空格,[是Shell内置命令,和后续参数必须用空格分隔 - 排查脚本是否存在Windows格式换行符,可执行
dos2unix 你的脚本文件名转换格式后重试
内容的提问来源于stack exchange,提问作者tash
相关产品推荐
相关产品推荐

