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

时间:2015-08-16 19:19:08

标签: linux bash shell process-substitution

我想运行这个脚本:

#!/bin/bash
echo <(true)

我将其视为:

sh file.sh

我得到&#34; Syntax error: "(" unexpected&#34; 。我发现了一些类似的情况,但仍然无法解决这个问题。 我是shell脚本的初学者,但据我所知:

  1. 我使用的shebang是正确的并且选择了bash shell,因此进程替换语法应该可以正常工作
  2. 我从命令行尝试相同的操作。我查看了echo $0,它给了我&#34; bash&#34;那么在命令行和调用同一个shell的脚本中运行命令的区别是什么?
  3. 也许它很简单,但我无法找到解释或解决方案。

2 个答案:

答案 0 :(得分:5)

您应该使用bash运行脚本,即bash ./script.sh或在将./script.sh设置为可执行文件后使用shebang。只有sh ./script.sh运行才会出现错误,正如Cyrus评论的那样。

另请参阅:role of shebang at unix.SE

答案 1 :(得分:0)

export POSIXLY_CORRECT=1~/.bashrc(等)文件中删除~/.profile

问题在于,流程替换是bash的一项新增功能,不属于posix标准。