【问题标题】:Bash script capturing output to terminal将输出捕获到终端的 Bash 脚本
【发布时间】:2012-08-04 01:49:43
【问题描述】:

我想将某个命令的输出捕获到我的 bash 脚本中(在一个变量中),该命令将其输出打印到终端。我尝试了以下方法:

TEST_OUT=`the_command ARG1`   #Nope

#Putting the line "the_command ARG1" into a separate script, testing2.sh,

TEST_OUT=$(./testing2.sh)   #Nope

testing2.sh
TEST_OUT=$?  #Nope

我 100% 确定当我跑步时...

> the_command ARG1

...在终端中,它将我想要捕获的信息准确地打印到终端。

感谢您的帮助!

【问题讨论】:

  • 您的脚本中似乎没有捕获标准错误输出,因此它将被打印到终端。
  • 如果输出被发送到stderr,你需要将它重定向到stdout,然后才能在你的var中捕获它。试试TEST_OUT=$(the_command ARG1 2>&1)
  • 嘿抱歉,这里是 bash 和脚本的新手...有两种方法可以打印到终端、stderr 和 stdout?
  • @ShawnChin 哦,它成功了!好的!发表你的答案,我会接受的
  • 已发布。顺便说一句,您通常使用 stdout 打印到终端,并且仅将 stderr 用于错误消息(因此当有人将输出重定向到文件或 var 时它不会被隐藏)。有关 stdout 和 stderr 的快速说明,请参阅en.wikipedia.org/wiki/…

标签: string bash shell


【解决方案1】:

如果输出被发送到 stderr,您需要将其重定向到 stdout,然后才能在您的 var 中捕获它。试试:

TEST_OUT=$(the_command ARG1 2>&1)

【讨论】:

  • 太棒了,我不知道黑白标准错误和标准输出的区别。好东西。
  • 如果你想要only stderr,使用$(the_command ARG1 2>&1 >/dev/null)
猜你喜欢
  • 2020-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-16
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
  • 2019-12-12
相关资源
最近更新 更多