如何存储已经走过throgh管道的命令的输出

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (11)

我正在尝试将命令输出的第二行的第一个单词存储为变量

我已经尝试将整个东西放在()里面,并且前面有一个$,它不起作用

containerID= docker ps | awk 'END { print }' | { read first rest ; echo $first ; }

echo $containerID
echo $containerID

我预计它会将containerID变量吐两次,但它只会将其吐出一次。在故障排除中我发现“echo $ first”是它输出任何东西的原因。这意味着它没有在containerID变量中存储任何内容,为什么?

提问于
用户回答回答于

使用$(...)捕捉命令的输出。不要在等号周围放置任何空间。

containerID=$(docker ps | awk 'END { print }' | { read first rest ; echo $first ; })

更简单:

containerID=$(docker ps | awk 'END {print $1}')

扫码关注云+社区

领取腾讯云代金券