感谢您的耐心等待,我是 Linux 新手,我需要一些帮助来了解如何解析 cut 命令的输出。
所以,目前我有一个变量
x=$(discover nginx --human=nood | cut -f1,6)
所以我的输出echo "$x
是一个类似的列表
实例 ID IP 地址
在我的程序中,我想对 x 的每一行运行 for 循环,并分别提取第一个和第二个变量。例如:如果它是一个数组 a[0] = instanceID 且 a[1]= IPAderess
请有人指导我如何单独提取元素。我知道我可以运行一个循环$x
并在其中进行剪切,但我希望了解是否有更好的方法。
答案1
为此,您根本不需要将数据存储在变量中,只需对 的输出进行循环discover
即可:
discover nginx --human=nood | cut -f 1,6 |
while read -r instanceID IPAddress; do
# Use "$instanceID" and "$IPAddress" here
done
或者,在bash
理解进程替换的 shell 中 ( <( ... )
):
while read -r instanceID IPAddress; do
# Use "$instanceID" and "$IPAddress" here
done < <( discover nginx --human=nood | cut -f 1,6 )
仅当您想携带某个变量的值时,这两者之间的差异才可见跳出循环。在第一个示例中,循环将在子 shell 中运行,因此您不会使用循环内设置的任何变量值后循环(它们存在于自己的本地环境中)。
在第二个示例中,不涉及任何子 shell(除了使用 和 运行进程替换的子 shell discover
)cut
,因此在循环之后可以访问变量的值。