加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 18:33:10 所属栏目:安全 来源:网络整理
导读:我试图在 Bash脚本命令中捕获aws ec2 delete-snapshot的输出,但是我无法捕获输出.我已经尝试过result = $(command),result =`command`等,但是当我尝试回显$result时,那里什么都没有. 这是一些示例输出. root@host:~# aws ec2 delete-snapshot --snapshot-id
我试图在 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读