了解 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,因此在循環之後可以存取變數的值。

相關內容