1. 程式人生 > >shell將字串分割為陣列

shell將字串分割為陣列

找到有兩種方法:

  1. 使用內建的分割符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

  1. 使用字串替換然後構造陣列
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

歡迎補充指正!