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

bash脚本执行报`syntax error near unexpected token '('`找不到原因

报错原因排查
  • 进程替换语法书写错误
    bash 进程替换的标准语法为<(命令),<与(之间不允许存在空格。你代码中写的< (printf ...)多了多余空格,会让shell将<识别为普通输入重定向符,后续的(就成了非法语法标记,直接触发对应报错。
    修正后的代码片段如下:
# match PLEX_REMOTE_DYNDNS IPs against resolved IPs
matched_ips=( $(comm -12 <(printf '%s\n' "${trusted_wan[@]}" | LC_ALL=C sort) <(printf '%s\n' "${resolved_ips[@]}" | LC_ALL=C sort)) )
  • 执行脚本的shell不支持进程替换特性
    进程替换属于bash、zsh等shell的扩展特性,不属于POSIX标准。如果脚本开头shebang写为#!/bin/sh,或者使用sh 脚本名.sh的方式执行,系统会调用dash这类兼容POSIX的轻量shell运行,无法识别进程替换语法,就会报括号相关语法错误。
    解决方法:
    1. 脚本开头指定bash作为解释器,写为#!/bin/bash或#!/usr/bin/env bash
    2. 执行脚本时使用bash 脚本名.sh,不要用sh执行
  • bash运行在POSIX兼容模式下
    如果脚本中配置了set -o posix,或者运行环境默认强制开启bash POSIX模式,进程替换特性会被禁用,也会触发该报错。
    解决方法:移除脚本中set -o posix配置,或执行脚本前手动关闭POSIX模式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:24:03