如何解决shell脚本运行时出现syntax error near unexpected token cat报错
你遇到的报错syntax error near unexpected token 'cat'的中文含义是:语法错误,位置在意外的标识符cat附近,由shell脚本多处语法错误导致,修复方案如下:
错误点说明
- shell对关键字大小写敏感,你写的
For、Cat都是错误写法,必须改为小写的for、cat - for循环遍历命令输出的格式错误:要获取
cat test.txt的执行结果作为遍历列表,必须用$()或者反引号包裹命令,直接写in cat test.txt会被shell识别为普通字符串,是触发本次报错的直接原因 - for循环缺少必要结构:shell的for循环必须用
do、done包裹循环执行的代码块,你缺少这两个关键字 cut命令参数错误:-f参数后需要跟具体的字段序号(比如-f 1代表取第一列),你写的w是非法参数,需要替换为你实际需要的字段值
修复后代码示例
基础修复版(完全匹配你原有逻辑)
for i in $(cat test.txt) do cat file.txt | head -n $i | tail -n 1 | cut -f 1 >> out.txt done
优化版(兼容空格场景+性能更高)
如果test.txt里的内容包含空格,或者要提升执行效率,推荐用while循环读行+sed提取指定行的写法:
while read -r i do sed -n "${i}p" file.txt | cut -f 1 >> out.txt done < test.txt
注意:以上代码里的
cut -f 1请替换为你实际需要的字段参数,比如按逗号分隔取第3列就改为cut -d ',' -f 3
内容的提问来源于stack exchange,提问作者jamshed
相关产品推荐
相关产品推荐

