簡體   English   中英

Bash 中的嵌套 for 循環和 arrays

[英]Nested for-loop and arrays in Bash

我有一個輸入文件,它是逗號分隔的行,我需要將其分配給如下所述的鍵,我已經嘗試分配它們,但我無法弄清楚如何分別分配它們,但組合在一起,如下所示預期結果.

如果有人能幫我解決這個問題,我將不勝感激,我之前沒有使用過 arrays 或逗號分隔值,並且在讓它工作時遇到問題。

輸入文件

10.219.196.0,15gb,Azure Cloud
10.219.196.0,55gb,Google Cloud
10.219.196.0,54gb,AWS Cloud

我必須用密鑰 IP 分配 IP 地址,用密鑰大小分配大小,用密鑰平台分配雲名稱,棘手的部分是我必須這樣分配

預期結果

IP1=10.219.196.0
Size1=15gb
Platform1=Azure Cloud
IP2=10.219.196.0
Size2=15gb
Platform2=Google Cloud
IP3=10.219.196.0
Size3=15gb
Platform3=AWS Cloud

我嘗試過的解決方案如下

i=1;
for $line in `cat file`
 do 
    my_ary=$line
    echo "IP$i=${my_ary[0]}"\n
    echo "Size$i=${my_ary[1]}"\n
    echo "platform$i=${my_ary[2]}"\n
    $i++
 done

請讓我知道如何解決此問題以獲得預期結果。

for中的變量必須在沒有美元符號的情況下使用。

您可以使用read -a將文件直接讀入數組,而不是循環cat 設置$IFS以逗號分隔每一行。

對於增量,使用算術表達式((...))

echo在打印其 arguments 后添加一個換行符。 無需寫\n

#! /bin/bash
i=1
while IFS=, read -a my_ary ; do 
    echo "IP$i=${my_ary[0]}"
    echo "Size$i=${my_ary[1]}"
    echo "Platform$i=${my_ary[2]}"
    ((i++))
done < "$1"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM