问题:对于’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