shell 使用指定的分割符来分割字符串的方法

一、对于不包含空格的字符串,使用下面方法

方法一

#!/bin/bash
string="hello,shell,haha" 
array=(${string//,/ }) 
for var in ${array[@]}
do
  echo $var
done

方法二

#!/bin/bash
string="hello,shell,haha"
OLD_IFS="$IFS"
IFS=","
array=($string)
IFS="$OLD_IFS"
for var in ${array[@]}
do
  echo $var
done

方法三:利用tr 指令实现字符替换

#!/bin/bash
string="one,two,three,four,five"
array=(`echo $string | tr ,  ` ) 
 
for var in ${array[@]}
do
  echo $var
done

二、对于包含空格的字符串,使用下面方法

#!/bin/bash
str=this is a good question, hello shell, look at me, show your enthusiasm
i=1
while((1==1))
do
  splitchar=`echo $str|cut -d "," -f$i`
  if [ "$splitchar" != "" ]
  then
      ((i++))
      echo $splitchar
  else
      break
  fi
done

在知道会分成几个部分的前提下,可以通过一下进行分割

#!/bin/bash
str=this is a good question, hello shell, look at me, show your enthusiasm
for((i=1;i<=4;i++))
do
  echo $str|cut -d "," -f$I
  if [[ $i -eq 1 ]]; then
    query=`echo $line|cut -d ":" -f$i`
  else
    pv_info=`echo $line|cut -d ":" -f$i`
done
经验分享 程序员 微信小程序 职场和发展