如何将 'hub' 命令的多行输出存储在变量中?
How to store multiline outputs from 'hub' command in a variable?
如果我使用 hub
命令在 GitHub 上创建一个 pull request 并且我得到一个错误然后它被输出为四行:
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'.
我的总体目标是捕获输出,而不是将其打印给用户。我只想向他们展示一条简单的错误消息(而不是四行输出)。理想情况下,我只想在 Error creating pull request
上执行 grep
并基于此打印一条专用错误消息。
谁能告诉我该怎么做?谢谢。
其他行可能打印到 STDERR。使用 command substitution 时,只有 STDOUT 被捕获到 vraiable 中。
要获得两者,您需要通过在命令中附加 2>&1
将 STDERR 重定向到 STDOUT:
output=$( your_command 2>&1 )
如果我使用 hub
命令在 GitHub 上创建一个 pull request 并且我得到一个错误然后它被输出为四行:
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'.
我的总体目标是捕获输出,而不是将其打印给用户。我只想向他们展示一条简单的错误消息(而不是四行输出)。理想情况下,我只想在 Error creating pull request
上执行 grep
并基于此打印一条专用错误消息。
谁能告诉我该怎么做?谢谢。
其他行可能打印到 STDERR。使用 command substitution 时,只有 STDOUT 被捕获到 vraiable 中。
要获得两者,您需要通过在命令中附加 2>&1
将 STDERR 重定向到 STDOUT:
output=$( your_command 2>&1 )