我想运行这个脚本:
#!/bin/bash
echo <(true)
我运行它为:
sh file.sh
我得到了“Syntax error: "(" unexpected
“。我发现了一些类似的情况,但仍然无法解决这个问题。我是shell脚本的初学者,但据我所知:
1.我使用的shebang是正确的,它选择了bashshell,因此进程替换语法应该可以工作
1.我在命令行中尝试了同样的方法,它成功了。我用echo $0
检查了一下,它给了我“bash
“,那么在命令行中运行命令和从调用同一个shell的脚本运行命令有什么区别呢?
也许事情很简单,但我找不到一个解释或解决办法。
3条答案
按热度按时间yvt65v4c1#
你应该用
bash
来运行你的脚本,也就是说,要么用bash ./script.sh
,要么在把它设置为可执行文件后使用./script.sh
的shebang。只有用sh ./script.sh
来运行它,我才能得到你的错误,正如Cyrus所评论的那样。另请参阅:role of shebang at unix.SE
n3schb8v2#
从
~/.bashrc
或~/.profile
(等等)文件中删除export POSIXLY_CORRECT=1
。问题在于进程替换是一个附加的bash特性,而不是posix标准的一部分。
4ioopgfo3#
errorsh:3:语法错误:"("意外
解决方案: