
感謝您的耐心等待,我是 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
,因此在循環之後可以存取變數的值。