为什么我无法在Bash中捕获AWS EC2 CLI输出?

前端之家收集整理的这篇文章主要介绍了为什么我无法在Bash中捕获AWS EC2 CLI输出?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在 Bash脚本命令中捕获aws ec2 delete-snapshot的输出,但是我无法捕获输出.我已经尝试过result = $(command),result =`command`等,但是当我尝试回显$result时,那里什么都没有.

这是一些示例输出.

root@host:~# aws ec2 delete-snapshot --snapshot-id vid --output json>test

A client error (InvalidParameterValue) occurred when calling the DeleteSnapshot operation: Value (vid) for parameter snapshotId is invalid. Expected: 'snap-...'.
root@host:~# aws ec2 delete-snapshot --snapshot-id vid>test

A client error (InvalidParameterValue) occurred when calling the DeleteSnapshot operation: Value (vid) for parameter snapshotId is invalid. Expected: 'snap-...'.
root@host:~# cat test
root@host:~# testing=$(aws ec2 delete-snapshot --snapshot-id vid)

A client error (InvalidParameterValue) occurred when calling the DeleteSnapshot operation: Value (vid) for parameter snapshotId is invalid. Expected: 'snap-...'.
root@host:~# echo $testing

root@host:~#

我需要自动创建和删除快照,但我无法捕获输出.

还有其他人遇到过这个问题吗?

> operator仅重定向stdout(“标准输出”)或“文件描述符1”.错误消息通常打印在不同的文件描述符2,stderr上(“标准错误”).在终端屏幕上,您将看到stdout和stderr.

> operator更像是1>的快捷方式,而且只重定向stdout. 2> 2运算符类似于1>但它不是重定向stdout,而是重定向stderr.

user@host$echo hello world >/dev/null
user@host$echo hello world 1>/dev/null
user@host$echo hello world 2>/dev/null
hello world
user@host$

因此,要将stdout和stderr重定向到同一文件,请使用> file 2>& 1.

user@host$echo hi 2>/dev/null 1>&2
user@host$

这说,“将echo的stderr重定向到/ dev / null,并将stdout重定向到stderr.

user@host$curl --invalid-option-show-me-errors >/dev/null
curl: option --invalid-option-show-me-errors: is unknown
try 'curl --help' or 'curl --manual' for more information

user@host$curl --invalid-option-show-me-errors 2>/dev/null
user@host$
user@host$curl --invalid-option-show-me-errors >/dev/null 2>&1
user@host$

在现代Bash中,您还可以使用&>将两个流重定向到同一个文件

user@host$curl --invalid-option-show-me-errors &>/dev/null
user@host$

所以对你来说,具体来说,使用:

aws ec2 delete-snapshot --snapshot-id vid --output json >test 2>&1

要么

aws ec2 delete-snapshot --snapshot-id vid --output json &>test
原文链接:https://www.f2er.com/bash/385569.html

猜你在找的Bash相关文章