bash - 当进程不存在时管道到进程?

标签 bash unix pipe

假设我从以下语句开始,该语句echo-s 一个字符串到以太中:

$ echo "foo" 1>/dev/null

然后我提交以下管道:

$ echo "foo" | cat -e - 1>/dev/null

然后我把过程留在外面:

$ echo "foo" | 1>/dev/null

为什么不返回错误消息?关于 bash 和管道的文档似乎没有直接提及可能是原因。在第一次从 echo 读取之前是否发送了一个 EOF(或者任何在管道上游运行的进程)?

最佳答案

shell 简单命令不需要有命令名。对于没有命令名称的命令:

  • 变量赋值适用于当前执行环境。以下将两个变量设置为参数值:

    arg1=$1 arg3=$3
    
  • 重定向发生在子 shell 中,但子 shell 除了初始化重定向之外不做任何事情。以下将截断或创建指定的文件(如果您具有适当的权限):

    >/file/to/empty
    

但是,一条命令必须至少有一个词。一个完全空的命令是一个语法错误(这就是为什么偶尔需要使用 :)。

答案总结自 Posix XCU§2.9.1

关于bash - 当进程不存在时管道到进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43948424/

相关文章:

bash - 如何使用双括号或单括号、圆括号、花括号

c - 管道:错误的文件描述符

node.js - nodejs - 将 appjs 控制台通过管道传输到文件

Linux 管道行为

git - 更改/添加文件到 git 标签?

bash - 在 shell 脚本中解压缩文件时出错。 - 需要PK兼容。 v5.1(可以做v4.6)

bash - 无法在 shell 脚本中运行 ssh

c - 执行命令并获取变量的 o/p

json - 如何使用 jq 在每个 json 上附加额外的换行符

linux - 快速 unix 命令在文件中间显示特定行?