Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Bash脚本进程替换语法错误:“0”;(“意外_Linux_Bash_Shell_Process Substitution - Fatal编程技术网

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脚本的初学者,但据我所知:

  • 我使用的shebang是正确的,并且选择了bashshell,因此进程替换语法应该可以工作
  • 我在命令行中尝试了同样的方法,效果很好。我使用
    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