You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell脚本执行报syntax error near unexpected token `('错误如何解决

错误原因
  • 第一,shell变量赋值时等号两侧不允许有空格,你写的EXIST= 'cat ...'中等号后带了空格,shell会错误将EXIST识别为待执行的命令,而非变量赋值。
  • 第二,你错误使用单引号包裹需要执行的命令,要捕获命令输出需要用命令替换语法(反引号`或者$()),同时外层单引号和awk语句的单引号发生了闭合冲突,导致awk代码里的(暴露给shell解析,触发语法错误。

你提到终端直接运行正常,大概率是你在终端直接执行了后面的管道命令,没有做变量赋值操作,所以没有触发赋值和引号冲突的问题。

修复方案

直接用$()做命令替换(可读性和兼容性都优于反引号),写法如下:

EXIST=$(cat Test.csv | sed "1 d" | awk -F, '{ if ($4 != "999.999.999.999" && $4 != "99.99.99.99") {print $1}}' | sort | uniq | wc -l)

可选优化

可以省略cat和sed,直接用awk跳过第一行,简化命令:

EXIST=$(awk -F, 'NR>1 { if ($4 != "999.999.999.999" && $4 != "99.99.99.99") {print $1} }' Test.csv | sort | uniq | wc -l)

内容的提问来源于stack exchange,提问作者beginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:36:02