1

如果我使用该hub命令在 GitHub 上创建拉取请求并收到错误消息,则会在四行中输出:

hub pull-request -p -b MyOrg:main -h Test_Branch -m "testing" 

输出:

Everything up-to-date
Branch 'Test_Branch' set up to track remote branch 'Test_Branch' from 'MyOrg'.
Error creating pull request: Unprocessable Entity (HTTP 422)
A pull request already exists for MyOrg:Test_Branch.

现在,如果我尝试以这种方式存储输出:

output=$(hub pull-request -p -b MyOrg:main -h Test_Branch -m "testing")

然后奇怪的是只有第二行存储在output.

如果我打印它,我只会看到第二行:

echo $output

结果:

Branch 'Test_Branch' set up to track remote branch 'Test_Branch' from 'MyOrg'.

我的总体目标是捕获输出而不是将其打印给用户。我只想向他们展示一条简单的错误消息(而不是四行输出)。理想情况下,我只想grepError creating pull request此基础上打印专门的错误消息。

谁能告诉我该怎么做?谢谢。

4

1 回答 1

1

其他行可能打印到 STDERR。使用命令替换时,只有 STDOUT 被捕获到 vraiable 中。

2>&1要同时获得两者,您需要通过附加到您的命令将 STDERR 重定向到 STDOUT :

output=$( your_command 2>&1 )
于 2021-11-16T09:17:45.767 回答