如何根据shell中的命令退出状态更改输出?

Pradyumna克里希纳

我在bash shell上工作,在编写脚本时我想改变命令的输出和错误提示。

例如,命令是

sudo apt install nano

我想输出

Installing nano

命令成功完成后,

Nano Installed

除此以外

Error occurred

在这样做的时候我尝试了

printf "\n Installing Nano"
{
  sudo apt install nano -y
} &> /dev/null
printf "\r Nano Installed \n"

但对于不同的退出状态,它不会显示不同的值

戈登·戴维森

我认为您正在混淆两种不同的东西,成功与失败以及标准输出与标准错误。stdout与stderr的区别实际上与命令的“正常”输出(stdout)与状态消息(stderr,包括错误消息,成功消息,状态消息等)有关。在您的情况下,您要打印的所有内容都应归入stderr,而不是stdout。

成功与失败是另一个问题,通常可以通过命令的退出状态来检测。看起来有些奇怪,但是检查命令退出状态的标准方法是将其用作if语句的条件,如下所示:

printf "\n Installing Nano" >&2
if sudo apt install nano -y &> /dev/null; then
    # The "then" branch runs if the condition succeeds
    printf "\r Nano Installed \n" >&2
else
    # The "else" branch runs if the condition fails
    printf "\r Error Occured  \n" >&2
fi

在某些情况下使用&&||不是if ... then ... else会引起混乱和奇怪的问题;我不建议这样做。)

注意:>&2将输出重定向到stderr,因此以上内容将所有消息发送到stderr。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从Linux Shell中删除“退出”命令

来自分类Dev

当左命令产生较大的输出时,如何在破折号“左|右”中检查左命令的退出状态

来自分类Dev

如何在Shell脚本中获取Java应用程序的退出状态,标准输出和标准错误流?

来自分类Dev

记录ssh shell的输出并保留退出状态

来自分类Dev

管道中命令的退出状态

来自分类Dev

状态行中的Shell命令输出:函数和宏

来自分类Dev

Python检查shell命令的退出状态

来自分类Dev

如何获取getline管道中命令的退出状态?

来自分类Dev

如何从Expect脚本中的命令获取退出状态

来自分类Dev

如何获取getline管道中命令的退出状态?

来自分类Dev

如何将命令的退出状态提取到变量中?

来自分类Dev

外部命令如何将其输出和退出状态都返回给Ruby?

来自分类Dev

外部命令如何将其输出和退出状态都返回给Ruby?

来自分类Dev

根据变量状态重定向命令输出

来自分类Dev

如何在Power Shell脚本中记录使用regsvr32命令注册的每个dll文件的输出状态

来自分类Dev

如何干净地拆分 shell 命令输出的 stdout 和 stderr 并在 Vim 状态行中显示后者?

来自分类Dev

如何使用shell管道根据退出代码有条件地显示输出?

来自分类Dev

Shell命令输出未以tmux状态显示

来自分类Dev

如何设置shell脚本的退出状态?

来自分类Dev

从shell脚本中的函数捕获退出状态

来自分类Dev

如何退出systemctl status命令的输出?

来自分类Dev

将命令输出保存到变量并检查退出状态

来自分类Dev

在popen调用后如何检测shell是否无法执行命令?不要与命令退出状态混淆

来自分类Dev

如何在ash shell中检查管道命令的返回状态?

来自分类Dev

如何遍历shell命令的输出?

来自分类Dev

如何读取shell命令的输出

来自分类Dev

如何在Redux中根据状态更改更新组件

来自分类Dev

在elisp中查找shell命令的退出代码

来自分类Dev

如何在mongo shell中每页显示命令输出页面

Related 相关文章

  1. 1

    如何从Linux Shell中删除“退出”命令

  2. 2

    当左命令产生较大的输出时,如何在破折号“左|右”中检查左命令的退出状态

  3. 3

    如何在Shell脚本中获取Java应用程序的退出状态,标准输出和标准错误流?

  4. 4

    记录ssh shell的输出并保留退出状态

  5. 5

    管道中命令的退出状态

  6. 6

    状态行中的Shell命令输出:函数和宏

  7. 7

    Python检查shell命令的退出状态

  8. 8

    如何获取getline管道中命令的退出状态?

  9. 9

    如何从Expect脚本中的命令获取退出状态

  10. 10

    如何获取getline管道中命令的退出状态?

  11. 11

    如何将命令的退出状态提取到变量中?

  12. 12

    外部命令如何将其输出和退出状态都返回给Ruby?

  13. 13

    外部命令如何将其输出和退出状态都返回给Ruby?

  14. 14

    根据变量状态重定向命令输出

  15. 15

    如何在Power Shell脚本中记录使用regsvr32命令注册的每个dll文件的输出状态

  16. 16

    如何干净地拆分 shell 命令输出的 stdout 和 stderr 并在 Vim 状态行中显示后者?

  17. 17

    如何使用shell管道根据退出代码有条件地显示输出?

  18. 18

    Shell命令输出未以tmux状态显示

  19. 19

    如何设置shell脚本的退出状态?

  20. 20

    从shell脚本中的函数捕获退出状态

  21. 21

    如何退出systemctl status命令的输出?

  22. 22

    将命令输出保存到变量并检查退出状态

  23. 23

    在popen调用后如何检测shell是否无法执行命令?不要与命令退出状态混淆

  24. 24

    如何在ash shell中检查管道命令的返回状态?

  25. 25

    如何遍历shell命令的输出?

  26. 26

    如何读取shell命令的输出

  27. 27

    如何在Redux中根据状态更改更新组件

  28. 28

    在elisp中查找shell命令的退出代码

  29. 29

    如何在mongo shell中每页显示命令输出页面

热门标签

归档