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

  

这种方法不需要知道分隔后的字符串的个数,具有更好的通用性。
————————————————
版权声明:本文为CSDN博主「CHEN_JP」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/CHEN_JP/article/details/8922582

posted @ 2022-08-23 10:55  huorexiaji  阅读(961)  评论(0)    收藏  举报