我经常看到如下命令:
command1 |& command2
所以我们在这里做的是将stderr重定向到stdin,以便它们“成为”stdin到管道中的下一个元素。
或者在Bash Reference manual -> Pipelines中更好地描述:
管道是一系列由其中一个分隔的简单命令 控制运营商'|'或'|&'。
...
如果使用
|&
,则除了它之外,还有command1的标准错误 标准输出,通过连接到command2的标准输入 管;它是2>&1 |
的简写。这种隐式重定向 标准输出的标准误差在任何之后执行 命令指定的重定向。
但是,我想知道:这个语法在所有Bash版本中都可用吗?也就是说,它总是可以与2>&1 |
互换吗?它还可以用在任何其他shell(ksh,csh ......)吗?
答案 0 :(得分:4)
此功能仅适用于Bash 4+:
// Get reference to icon drawable
Drawable iconDrawable = mPackageHelper.getAppIcon(mApp.getAppPackage());
Bitmap iconBitmap = ((BitmapDrawable) iconDrawable).getBitmap();
Palette iconPalette = Palette.from(iconBitmap).maximumColorCount(16).generate();
int primaryColorInt = iconPalette.getVibrantColor(0x000000);
mToolbar.setBackgroundColor(primaryColorInt);
collapsingToolbar.setBackgroundColor(primaryColorInt);
|& (bash4)
另请注意, checkbashisms 脚本也会标记它:
dd. The parser now understands `|&' as a synonym for `2>&1 |', which redirects the standard
error for a command through a pipe.