避免由于缺少命令而导致多个管道损坏

管理员

在shell脚本中,我经常使用多个管道,如下所示:

cmd1 | cmd2 | cmd3

现在,如果cmd2丢失,管道将导致“断开”,并且cmd3不会收到任何输入。

作为解决方法,我可以明确测试cmd2是否存在,但这需要一些我想避免的代码复制。

相反,我想要一个更简洁的测试,例如:

cmd1 | cmd2; [ $? -eq 127 ] && cat | cmd3
格雷戈里·尼斯贝特(Gregory Nisbet)

根据您的示例,您似乎正在寻找一种将参数分组到优先级低于的操作|(即&&||)的方法。

{}元字符可用于这种分类方式。

上面的示例可以这样写(使用的退出状态which确定是否cmd2存在)。

cmd1 | { which cmd2 >/dev/null && cmd2 || cat; } | cmd3

例如

printf "hi\n" | { : && rev || cat; } | cat

会列印 ih

您关于使用子外壳程序的建议也可以,但是不必要地使用另一个进程

printf "hi\n" | ( : && rev || cat ) | cat

我要说的是,如果if在管道外部使用显式的方法,那么它可能不会那么棘手,而对于可维护性则更好

if [ which cmd2 >/dev/null ]
then
    cmd1 | cmd3
else
    cmd1 | cmd2 | cmd3
fi

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

管道命令使标准输入损坏

来自分类Dev

由于缺少关系,Power BI Visual损坏

来自分类Dev

由于缺少关系,Power BI Visual损坏

来自分类Dev

由于崩溃导致系统日志损坏?

来自分类Dev

避免因断电而导致文件损坏

来自分类Dev

避免因断电而导致文件损坏

来自分类Dev

jQuery:避免由于fadeOut()而导致代码重复

来自分类Dev

避免由于变量为NULL而导致IF ELSE

来自分类Dev

如何避免由于舍入错误而导致的NaN

来自分类Dev

避免由于相对网址而导致的错误请求

来自分类Dev

避免由于变量为NULL而导致IF ELSE

来自分类Dev

避免由于未扩展的星号而导致的错误

来自分类Dev

由于缺少方法而导致PanoJS失败

来自分类Dev

由于缺少权限而导致“捕获”错误?

来自分类Dev

由于在 C 中打开新文件而导致数据损坏

来自分类Dev

由于标头中的 #define 不匹配而导致内存损坏

来自分类Dev

由于SSIS中的多个JOIN导致超时

来自分类Dev

当管道Linux命令时,如何避免管道python打印

来自分类Dev

如何避免由于dpkg锁定文件而导致部署失败?

来自分类Dev

如何避免由于while循环而导致游戏死机?

来自分类Dev

如何避免由于大型墓碑扫描而导致Cassandra读取失败?

来自分类Dev

避免由于tar无法恢复目录权限而导致的错误

来自分类Dev

避免由于证书错误而导致Java的安全警告

来自分类Dev

忽略由于缺少控制器参数而导致的异常

来自分类Dev

由于在特征上缺少方法,导致AbstractMethodError(库更新)

来自分类Dev

由于缺少库arc4random而导致的生成错误

来自分类Dev

由于缺少服务令牌,导致kube-scheduler发生CrashLoopBackOff

来自分类Dev

由于缺少32位库,导致Steam无法启动

来自分类Dev

由于缺少VBA优化而导致Excel 2013溢出

Related 相关文章

  1. 1

    管道命令使标准输入损坏

  2. 2

    由于缺少关系,Power BI Visual损坏

  3. 3

    由于缺少关系,Power BI Visual损坏

  4. 4

    由于崩溃导致系统日志损坏?

  5. 5

    避免因断电而导致文件损坏

  6. 6

    避免因断电而导致文件损坏

  7. 7

    jQuery:避免由于fadeOut()而导致代码重复

  8. 8

    避免由于变量为NULL而导致IF ELSE

  9. 9

    如何避免由于舍入错误而导致的NaN

  10. 10

    避免由于相对网址而导致的错误请求

  11. 11

    避免由于变量为NULL而导致IF ELSE

  12. 12

    避免由于未扩展的星号而导致的错误

  13. 13

    由于缺少方法而导致PanoJS失败

  14. 14

    由于缺少权限而导致“捕获”错误?

  15. 15

    由于在 C 中打开新文件而导致数据损坏

  16. 16

    由于标头中的 #define 不匹配而导致内存损坏

  17. 17

    由于SSIS中的多个JOIN导致超时

  18. 18

    当管道Linux命令时,如何避免管道python打印

  19. 19

    如何避免由于dpkg锁定文件而导致部署失败?

  20. 20

    如何避免由于while循环而导致游戏死机?

  21. 21

    如何避免由于大型墓碑扫描而导致Cassandra读取失败?

  22. 22

    避免由于tar无法恢复目录权限而导致的错误

  23. 23

    避免由于证书错误而导致Java的安全警告

  24. 24

    忽略由于缺少控制器参数而导致的异常

  25. 25

    由于在特征上缺少方法,导致AbstractMethodError(库更新)

  26. 26

    由于缺少库arc4random而导致的生成错误

  27. 27

    由于缺少服务令牌,导致kube-scheduler发生CrashLoopBackOff

  28. 28

    由于缺少32位库,导致Steam无法启动

  29. 29

    由于缺少VBA优化而导致Excel 2013溢出

热门标签

归档