Shell中字串分割的三種方法
阿新 • • 發佈:2019-02-08
問題:對於’1,2,3,4,5’這樣的字串輸出採用,分隔開的1 2 3 4 5
特徵:在字串中沒有空格
解決方法1:
#!/bin/bash
var=’1,2,3,4,5’
var=${var//,/ } #這裡是將var中的,替換為空格
for element in $var
do
echo $element
done
若原來字串中有空格如:’mark:x:0:0:this is a test user:/var/mark:nologin’這樣的字串,要將:分隔的字串輸出,上面的方法會將this is a test user分別輸出,這個是不對的。
對於這種情況解決方法2:
#!/bin/bash user=’mark:x:0:0:this is a test user:/var/mark:nologin’ for((i=1;i<=7;i++)) do echo $user|cut -d ":" -f$i done
上面這種方法是確定字串分隔後的長度的,要是寫的更通用一點,向下面這樣
解決方法3:
#!/bin/bash user=’mark:x:0:0:this is a test user:/var/mark:nologin’ i=1 while((1==1)) do split=`echo $user|cut -d ":" -f$i` if [ "$split" != "" ] then ((i++)) echo $split else break fi done
這種方法不需要知道分隔後的字串的個數,具有更好的通用性。