我正在嘗試遍歷多個逗號分隔的字串,字串中的逗號數量相同。
我已經嘗試了以下代碼段,但它沒有回傳任何內容。
#!/bin/bash
ip1=“Ok1,ok2,ok3”
ip2=“ty1,ty2,ty3”
for i in ${ip[@]//,/}
do
echo $i
done
有人可以建議我如何改變這一點。
uj5u.com熱心網友回復:
盡快將逗號分隔的字串替換為陣列。如果它是一個硬編碼的字串,那很簡單:
ip1=(Ok1 ok2 ok3)
如果它來自外部源(例如,命令列引數或從檔案中讀取),請使用read:
ip1s="Ok1,ok2,ok3"
IFS=, read -a ip1 <<< "$ips1"
一旦有了陣列,就可以使用陣列語法進行迭代:
for i in "${ip1[@]}"; do
echo "$i"
done
如果您有多個要以同步方式迭代的陣列,則可以迭代陣列的鍵:
for i in "${!ip1[@]}"; do
echo "${ip1[i]}"
echo "${ip2[i]}"
done
(這忽略了稀疏陣列的可能性,但您必須努力獲得這些。實際上,具有n元素的陣列通常具有鍵 0、1、...- n1。)
uj5u.com熱心網友回復:
修復:
- 更改
ip為ip1或ip2 - 將智能引號更改為常規引號:
“→" - 通過在最后添加一個空格來用空格替換逗號
/
ip1="Ok1,ok2,ok3"
ip2="ty1,ty2,ty3"
for i in ${ip1//,/ }
do
echo "$i"
done
最好使用陣列,然后專案會自然分離,您不必進行任何字串操作。
ip1=(Ok1 ok2 ok3)
ip2=(ty1 ty2 ty3)
for i in "${ip1[@]}"
do
echo "$i"
done
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/435265.html
上一篇:回圈到回圈的變數傳輸,或資料錯誤
