问题:对于’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
这种方法不需要知道分隔后的字符串的个数,具有更好的通用性。