Bash script process substitution Syntax error: "(" unexpected
Bash script process substitution Syntax error: "(" unexpected
我想要运行这个脚本:
#!/bin/bash
echo <(true)
我运行它是:
sh file.sh
然后我得到“Syntax error: "(" unexpected
”。我发现了一些类似的情况,但仍然无法解决。
我是 shell 脚本的初学者,但据我了解:
- 我使用的 shebang 是正确的并选择了 bash shell ,所以进程替换语法应该有效
- 我从命令行尝试了同样的方法,它起作用了。我检查了
echo [=13=]
,它给了我 "bash
" ,那么在命令行中使用 运行 命令和调用相同 shell 的脚本有什么区别?
也许这很简单,但我找不到解释或解决方案。
您应该 运行 您的脚本 bash
,即 bash ./script.sh
或在将其设置为可执行文件后使用 ./script.sh
的 shebang。正如赛勒斯评论的那样,只有 运行 将其与 sh ./script.sh
结合使用才能得到您的错误。
从您的 ~/.bashrc
或 ~/.profile
(等)文件中删除 export POSIXLY_CORRECT=1
。
问题在于流程替换是一项添加的 bash 功能,不属于 posix 标准。
sh file.sh
errorsh:3:语法错误:“(”意外
解决方案:
bash file.sh
我想要运行这个脚本:
#!/bin/bash
echo <(true)
我运行它是:
sh file.sh
然后我得到“Syntax error: "(" unexpected
”。我发现了一些类似的情况,但仍然无法解决。
我是 shell 脚本的初学者,但据我了解:
- 我使用的 shebang 是正确的并选择了 bash shell ,所以进程替换语法应该有效
- 我从命令行尝试了同样的方法,它起作用了。我检查了
echo [=13=]
,它给了我 "bash
" ,那么在命令行中使用 运行 命令和调用相同 shell 的脚本有什么区别?
也许这很简单,但我找不到解释或解决方案。
您应该 运行 您的脚本 bash
,即 bash ./script.sh
或在将其设置为可执行文件后使用 ./script.sh
的 shebang。正如赛勒斯评论的那样,只有 运行 将其与 sh ./script.sh
结合使用才能得到您的错误。
从您的 ~/.bashrc
或 ~/.profile
(等)文件中删除 export POSIXLY_CORRECT=1
。
问题在于流程替换是一项添加的 bash 功能,不属于 posix 标准。
sh file.sh
errorsh:3:语法错误:“(”意外
解决方案:
bash file.sh