shell將字串分割為陣列
阿新 • • 發佈:2018-10-31
找到有兩種方法:
- 使用內建的分割符
IFS
str="192.168.31.65"
OLD_IFS="$IFS" #儲存舊的分隔符
IFS="."
array=($str)
IFS="$OLD_IFS" # 將IFS恢復成原來的
for i in "${!array[@]}"; do
echo "$i=>${array[i]}"
done
以上程式碼輸出:
0=>192
1=>168
2=>31
3=>65
- 使用字串替換然後構造陣列
str="192.168.31.65"
array= (${str//\./ })
for i in "${!array[@]}"; do
echo "$i=>${array[i]}"
done
以上程式碼輸出和第一種方法一樣。
其中IFS是內部欄位分隔符(internal field separator)。IFS環境變數定義了bash shell使用者欄位分隔符的一系列字元。預設情況下,bash shell會將下面的字元當做欄位分隔符:空格、製表符、換行符。
參考:
https://stackoverflow.com/questions/10586153/split-string-into-an-array-in-bash
歡迎補充指正!