一尘不染

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

linux

我要运行此脚本:

#!/bin/bash
echo <(true)

我将其运行为:

sh file.sh

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

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

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


阅读 243

收藏
2020-06-02

共1个答案

一尘不染

您应该使用来运行脚本bash,即,bash ./script.sh或者将shebang
./script.sh设置为可执行文件后再使用shebang 。sh ./script.sh正如Cyrus所评论的那样,仅在运行时我才会得到您的错误。

2020-06-02