shell Bash脚本进程替换语法错误:"("意外

gywdnpxw  于 2023-01-26  发布在  Shell
关注(0)|答案(3)|浏览(141)

我想运行这个脚本:

#!/bin/bash
echo <(true)

我运行它为:

sh file.sh

我得到了“Syntax error: "(" unexpected“。我发现了一些类似的情况,但仍然无法解决这个问题。我是shell脚本的初学者,但据我所知:
1.我使用的shebang是正确的,它选择了bashshell,因此进程替换语法应该可以工作
1.我在命令行中尝试了同样的方法,它成功了。我用echo $0检查了一下,它给了我“bash“,那么在命令行中运行命令和从调用同一个shell的脚本运行命令有什么区别呢?
也许事情很简单,但我找不到一个解释或解决办法。

yvt65v4c

yvt65v4c1#

你应该用bash来运行你的脚本,也就是说,要么用bash ./script.sh,要么在把它设置为可执行文件后使用./script.sh的shebang。只有用sh ./script.sh来运行它,我才能得到你的错误,正如Cyrus所评论的那样。
另请参阅:role of shebang at unix.SE

n3schb8v

n3schb8v2#

~/.bashrc~/.profile(等等)文件中删除export POSIXLY_CORRECT=1
问题在于进程替换是一个附加的bash特性,而不是posix标准的一部分。

4ioopgfo

4ioopgfo3#

    • 请登录www.example.comfile.sh

errorsh:3:语法错误:"("意外
解决方案:

    • 猛击www.example.comfile.sh

相关问题