問題:對於’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
這種方法不需要知道分隔后的字符串的個數,具有更好的通用性