[英]How to loop through multiple comma separated strings in shell
我試圖循環遍歷多個逗號分隔的字符串,字符串中的逗號數量相同。
我試過下面的代碼片段,但它沒有返回任何東西。
#!/bin/bash
ip1=“Ok1,ok2,ok3”
ip2=“ty1,ty2,ty3”
for i in ${ip[@]//,/}
do
echo $i
done
有人可以建議我如何改變這一點。
盡快用數組替換逗號分隔的字符串。 如果它是一個硬編碼的字符串,那是微不足道的:
ip1=(Ok1 ok2 ok3)
如果它來自外部源(例如,命令行參數或從文件中讀取),請使用read
:
ip1s="Ok1,ok2,ok3"
IFS=, read -a ip1 <<< "$ips1"
一旦有了數組,就可以使用數組語法進行迭代:
for i in "${ip1[@]}"; do
echo "$i"
done
如果你有多個 arrays 想要同步迭代,你可以迭代 arrays 的鍵:
for i in "${!ip1[@]}"; do
echo "${ip1[i]}"
echo "${ip2[i]}"
done
(這忽略了稀疏 arrays 的可能性,但您必須努力獲得這些。實際上,具有n
元素的 arrays 通常具有鍵 0、1、... n
-1。)
修復:
ip
ip1
或者ip2
“
→ "
/
之后添加一個空格來將逗號替換為空格ip1="Ok1,ok2,ok3"
ip2="ty1,ty2,ty3"
for i in ${ip1//,/ }
do
echo "$i"
done
最好使用 arrays,這樣項目就會自然地分開,並且您不必進行任何字符串操作。
ip1=(Ok1 ok2 ok3)
ip2=(ty1 ty2 ty3)
for i in "${ip1[@]}"
do
echo "$i"
done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.