我什么时候可以使用|&在巴什?它可用于其他外壳吗?

时间:2015-10-17 23:38:17

标签: bash shell

我经常看到如下命令:

command1 |& command2

所以我们在这里做的是将stderr重定向到stdin,以便它们“成为”stdin到管道中的下一个元素。

或者在Bash Reference manual -> Pipelines中更好地描述:

  

管道是一系列由其中一个分隔的简单命令   控制运营商'|'或'|&'。

     

...

     

如果使用|&,则除了它之外,还有command1的标准错误   标准输出,通过连接到command2的标准输入   管;它是2>&1 |的简写。这种隐式重定向   标准输出的标准误差在任何之后执行   命令指定的重定向。

但是,我想知道:这个语法在所有Bash版本中都可用吗?也就是说,它总是可以与2>&1 |互换吗?它还可以用在任何其他shell(ksh,csh ......)吗?

1 个答案:

答案 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);

Source

|& (bash4)

Source

另请注意, checkbashisms 脚本也会标记它:

dd. The parser now understands `|&' as a synonym for `2>&1 |', which redirects the standard
    error for a command through a pipe.

Source