想象一个简单的命令如下:
cmd1 | cmd2
Run Code Online (Sandbox Code Playgroud)
是否cmd2开始执行
cmd1输出一些东西cmd1完全完成并退出?在第 1 种情况下,当cmd1输出速度比cmd2消耗速度快时,或者只是在第 2 种情况下,中间输出必须有一个缓冲区。
当涉及到复制文件描述符时,我能得到对 dup() 函数的真正简化的解释吗?我想使用管道,但我还必须让孩子从管道中读取(这是最简单的部分),但将数据写回父级。我应该使用另一个管道,还是可以使用相同的管道?
$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c %d %P
Run Code Online (Sandbox Code Playgroud)
'|'是什么 文件意味着/proc/sys/kernel/core_pattern什么?
我是Bash的新手,我正在尝试学习如何使用|来首先执行两个命令 符号,其次是如何将两个命令连接到复合命令中.
在一行中写入两个命令时,管道符号| 用于将第一个命令的输出连接到第二个命令的输入.所以我不太明白它是如何加入"嘿"和",你好吗?".
echo "hey" | echo ", how are you?"
Run Code Online (Sandbox Code Playgroud)
编写复合命令时,命令应位于以分号分隔的左括号和右括号之间.在这种情况下
{ echo "Hey"; echo ", how are you" }
Run Code Online (Sandbox Code Playgroud)
,但它似乎没有按预期工作.
对于这两种情况,我可以在这里错过什么?
如果我运行此程序,它将起作用。
dig +short myip.opendns.com @resolver1.opendns.com
Run Code Online (Sandbox Code Playgroud)
如果我这样做了,那是行不通的
ip=$(dig +short myip.opendns.com @resolver1.opendns.com) | echo "$ip"
Run Code Online (Sandbox Code Playgroud)
如何通过管道命令传递变量?