[英]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.