了解 cut -f 的输出

了解 cut -f 的输出

感谢您的耐心等待,我是 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 discovercut,因此在循环之后可以访问变量的值。

相关内容