如果在一个命令中多次重定向操作符。(巴什)
例如。
arg_1 > arg_2 > arg_3 > arg_4
例如。
arg_1 < arg_2 > arg_3 < arg_4 < arg_5 > arg_6
我知道如果一个重定向操作符是如何工作的。
但是,如果一个命令行中有多个重定向操作符,这些操作是如何工作的?
发布于 2020-12-15 14:15:39
重定向是从左到右计算的。把>foo看作是stdout=foo。因此重定向在
prog >foo >bar 对应于设置
stdout=foo
stdout=bar,这意味着总体来说,stdout最终被重定向到bar (比如首先将变量设置为一个值,然后设置为某个不同的值),但是由于将stdout设置为一个文件,也具有创建该文件的效果,所以foo和bar最终都将存在,即使没有任何写入foo的内容。
就像,
prog >foo 2>&1 >bar会做一个
stdout=foo
stderr=stdout
stdout=bar你就会去酒吧,斯泰尔去福。当然,在实践中,您只需编写prog 2>foo >bar,就可以达到这一效果。
https://stackoverflow.com/questions/65304065
复制相似问题