問題:對於’1,2,3,4,5’這樣的字符串輸出採用,分隔開的1 2 3 4 5bash
特徵:在字符串中沒有空格this
解決方法1:.net
- #!/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分別輸出,這個是不對的。blog
對於這種狀況解決方法2:ip
- #!/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
上面這種方法是肯定字符串分隔後的長度的,要是寫的更通用一點,向下面這樣element
解決方法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
這種方法不須要知道分隔後的字符串的個數,具備更好的通用性get