4

我想运行这个脚本:

#!/bin/bash
echo <(true)

我将其运行为:

sh file.sh

我得到“ Syntax error: "(" unexpected”。我发现了一些类似的情况,但仍然无法解决这个问题。我是 shell scripting 的初学者,但据我了解:

  1. 我使用的 shebang 是正确的,并且选择了 bash shell,所以进程替换语法应该可以工作
  2. 我从命令行尝试相同的方法,它可以工作。我检查了一下echo $0,它给了我 " bash" ,那么在命令行中运行命令和调用相同 shell 的脚本有什么区别?

也许这很简单,但我找不到解释或解决方案。

4

2 回答 2

7

您应该使用 运行您的脚本bash,即在将其设置为可执行文件后bash ./script.sh使用shebang 或使用shebang 。正如赛勒斯所说,./script.sh只有运行它才能得到你的错误。sh ./script.sh

另请参阅:shebang 在 unix.SE 中的角色

于 2015-08-16T19:25:33.877 回答
0

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

问题是进程替换是一个附加的 bash 功能,它不是 posix 标准的一部分。

于 2020-07-06T18:25:13.543 回答