Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.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
bash脚本中临时未命名管道的问题_Bash_Pipe - Fatal编程技术网

bash脚本中临时未命名管道的问题

bash脚本中临时未命名管道的问题,bash,pipe,Bash,Pipe,我有以下问题: 当我在终端窗口中直接执行以下脚本时,命令的行为与预期一致 $ diff <(echo tmp) <(echo tmp1) 1c1 < tmp --- > tmp1 $diff试试看 或 当我这样做的时候,对我来说都很好 bourne shell(sh)似乎不支持该语法。该语法看起来并不熟悉。您确定正在终端中使用bash吗?当使用sh调用bash时,您可以通过键入echo$SHELL来验证它是否以一种特殊的POSIX兼容模式启动。这有不同的语法,我想这解释

我有以下问题:

当我在终端窗口中直接执行以下脚本时,命令的行为与预期一致

$ diff <(echo tmp) <(echo tmp1)
1c1
< tmp
---
> tmp1
$diff试试看

当我这样做的时候,对我来说都很好


bourne shell(sh)似乎不支持该语法。

该语法看起来并不熟悉。您确定正在终端中使用bash吗?当使用
sh
调用bash时,您可以通过键入
echo$SHELL

来验证它是否以一种特殊的POSIX兼容模式启动。这有不同的语法,我想这解释了不同的结果


请参阅,#22:“进程替换不可用”。

我在osx上的bash上按照qn工作,在debian上的bash失败,都是2.05b.0(1)版本。谢谢,我没有想到bash和bourne之间的区别。这就解决了问题@如果你的问题解决了,请考虑接受CodAddit的回答。答案的分数下面有一个勾选框,你可以点击来完成。谢谢你的澄清,我想#/脚本开头的bin/bash就足够了。@sugo:shebang在指定解释器时被覆盖。除非
sh
符号链接到
Bash
,否则它不一定在POSIX模式下运行Bash。所以它实际上是在使用
sh
在您的系统上表示的任何内容。一种方法是创建一个由名为“showshell”的
ls-l/proc/$$/exe组成的文件,并使用
sh./showshell
bash./showshell
运行它,您将看到符号链接。在我的系统上,
sh
/bin/dash
#! /bin/bash
diff <(echo tmp) <(echo tmp1)
$ sh test.sh
test.sh: line 2: syntax error near unexpected token `('
test.sh: line 2: ` diff <(echo tmp) <(echo tmp1)'
bash test.sh
chmod ugo+x test.sh
./test.sh