【问题标题】:Bash, assigning command output to a variable [duplicate]Bash,将命令输出分配给变量[重复]
【发布时间】:2019-07-15 20:34:42
【问题描述】:

我正在尝试在多台服务器上自动安装 nginx,并且我有一个 shell 脚本。它会运行版本检查是否已安装 nginx 及其版本。

尝试分配TMP=$(nginx -v),而不是将其存储在变量中,而是将结果打印到控制台。 printf "$TMP" 打印一个空字符串

【问题讨论】:

标签: bash shell


【解决方案1】:

问题是您的命令没有打印到 STDOUT 而是打印到 STDERR。

使用:

TMP=$(nginx -v 2>&1)

将解决您的问题,有关详细信息,请参阅here

【讨论】:

  • 它实际上输出到STDOUT,安装了nginx,所以我认为应该没有错误
  • 我不知道你有哪个版本,但对我来说 (nginx version: nginx/1.14.0 (Ubuntu)) 它正在输出到 STDERR。以上对您不起作用吗?
  • 哦,哇,如何检查 ti 是否输出到 stderr 以供将来参考?
  • 您通常无法通过查看屏幕来判断。一种常见的方法是尝试将 STDERR 和/或 STDOUT 重定向到不同的文件。但我最喜欢使用:github.com/sickill/stderred 并将 STDERR 涂成红色 :-)
猜你喜欢
  • 1970-01-01
  • 2012-07-16
  • 2014-01-08
  • 2011-01-19
  • 2016-09-08
  • 2021-06-11
  • 2019-11-30
  • 2012-02-02
相关资源
最近更新 更多