1. 程式人生 > >Shell中字串分割的三種方法

Shell中字串分割的三種方法

問題:對於’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

這種方法不需要知道分隔後的字串的個數,具有更好的通用性。