Linux Bash脚本进程替换语法错误:“0”;(“意外
我要运行此脚本:Linux Bash脚本进程替换语法错误:“0”;(“意外,linux,bash,shell,process-substitution,Linux,Bash,Shell,Process Substitution,我要运行此脚本: #!/bin/bash echo <(true) 我得到了“语法错误:”(“意外的””。我发现了一些类似的情况,但仍然无法解决这个问题。 我是shell脚本的初学者,但据我所知: 我使用的shebang是正确的,并且选择了bashshell,因此进程替换语法应该可以工作 我在命令行中尝试了同样的方法,效果很好。我使用echo$0进行了检查,它给了我“bash”,那么在命令行中运行命令和调用同一shell的脚本有什么区别呢 也许这很简单,但我找不到解释或解决办法。你应该用
#!/bin/bash
echo <(true)
我得到了“语法错误:”(“意外的”
”。我发现了一些类似的情况,但仍然无法解决这个问题。
我是shell脚本的初学者,但据我所知:
echo$0
进行了检查,它给了我“bash
”,那么在命令行中运行命令和调用同一shell的脚本有什么区别呢也许这很简单,但我找不到解释或解决办法。你应该用
bash
运行你的脚本,即bash./script.sh
或者在将它设置为可执行文件后通过/script.sh
使用shebang。只有用sh./script.sh
运行它,我才能得到你的错误,如注释e所示赛勒斯的d
另请参见:从
~/.bashrc
或~/.profile
(等)文件中删除导出POSIXLY\u CORRECT=1
问题是,进程替换是一种添加的bash功能,不属于posix标准的一部分。如何运行此脚本?我可以使用
sh./script.sh
@Cyrus复制此功能,而使用/file.sh
:)则无法复制此功能如果还没有解决,我是否使用了sh file.sh…我假设它总是查看shebang声明。感谢链接,它帮助了我很多-当我在命令行指定interpeter时,shebang被忽略。所以我应该使用“bash file.sh-通过命令行确定解释器,./file.sh-通过shebang声明确定解释器”@KatrinnaL/file.sh
是首选;文件的shebang行应该“知道”要使用哪个shell,而您可能不知道。使用bash file.sh
的唯一真正原因是shebang是否错误(或丢失)或者该文件不可执行——但在这种情况下,最好先解决问题,然后使用/file.sh
。
sh file.sh