假设我从以下语句开始,该语句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/