Shell脚本深入教程:Bash进程替换

Bash还支持进程替换(注:有些Shell不支持进程替换)。

进程替换的语法:

<(cmd)
>(cmd)

进程替换和命令替换类似,都是让cmd命令先执行,因为它们都是在Shell解析命令行的阶段执行的。

进程替换先让cmd放入后台异步执行,并且不会等待cmd执行完。

其实,每个进程替换都是一个虚拟文件,只不过这个文件的内容是由cmd命令产生的( <(cmd) )或被cmd命令读取的( >(cmd) )。

$ echo <(echo www.junmajinlong.com)
/dev/fd/63

既然进程替换是文件,那么它就可以像文件一样被操作。比如被读取、被当作标准输入重定向的数据源等等:

# cmd做数据产生者
$ cat <(echo www.junmajinlong.com)   # 等价于cat /dev/fd/63
$ cat < <(echo www.junmajinlong.com) # 等价于cat </dev/fd/63

# cmd做数据接收者
$ echo hello world > >(grep 'llo')
$ echo hello world | tee >(grep 'llo') >(grep 'rld') >/dev/null
我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章