Bash脚本进程替换触发语法错误,命令行执行正常求助
问题解决:Syntax error: "(" unexpected
问题根源
报错的核心原因是进程替换(>(...))是Bash独有的特性,而你的脚本可能被sh(比如Dash这类POSIX标准shell)执行了——sh不支持这种语法,因此会把(识别为非法的意外符号。
命令行下能正常运行是因为终端默认使用Bash,天然支持进程替换;但脚本执行时若调用了sh解释器,就会触发该语法错误。
解决方案
1. 修正脚本的Shebang行
在脚本的最顶部,将原有的#!/bin/sh替换为:
#!/bin/bash
或者更通用的跨系统写法(优先查找系统中的Bash):
#!/usr/bin/env bash
修改完成后确保脚本拥有执行权限:
chmod +x ./echoz.sh
2. 直接用Bash执行脚本
如果不想修改脚本内容,执行时明确指定用Bash运行:
bash ./echoz.sh
额外验证
可以先确认当前系统中sh指向的具体shell:
ls -l /bin/sh
如果输出显示/bin/sh -> dash,则说明默认sh是不支持进程替换的Dash,必须用Bash来运行该脚本。
内容的提问来源于stack exchange,提问作者Hid-K
相关产品推荐
相关产品推荐

