多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] ### **拼接字符串** ~~~ your_name="runoob" # 使用双引号拼接 greeting="hello, "$your_name" !" greeting_1="hello, ${your_name} !" echo $greeting $greeting_1 # 使用单引号拼接 greeting_2='hello, '$your_name' !' greeting_3='hello, ${your_name} !' echo $greeting_2 $greeting_3 ~~~ 输出结果为: ~~~ hello, runoob ! hello, runoob ! hello, runoob ! hello, ${your_name} ! ~~~ ### **获取字符串长度${#str}** ~~~ string="abcd" echo ${#string} #输出 4 ~~~ 其他方法 ``` Str="Welcome to W3Cscholl.cn" length=`expr length "$Str"` echo " 给定的字符串:'$Str' 长度为 $length" Str="Welcome to W3Cscholl.cn" length=`expr "$Str" : '.*'` echo " 给定的字符串:'$Str' 长度为 $length" Str="Welcome to W3Cscholl.cn" length=`echo $Str | wc -c` echo " 给定的字符串:'$Str' 长度为 $length" Str="Welcome to W3Cscholl.cn" length=`echo $Str |awk '{print length}'` echo " 给定的字符串:'$Str' 长度为 $length" ``` ### **提取子字符串** 以下实例从字符串第**2**个字符开始截取**4**个字符: ~~~ string="runoob is a great site" echo ${string:1:4} # 输出 unoo ~~~ **注意**:第一个字符的索引值为**0**。 ### **查找指定字符串在给定字符串的位置** 查找字符**i**或**o**的位置(哪个字母先出现就计算哪个): ~~~ string="runoob is a great site" echo `expr index "$string" io` # 输出 4 ~~~ **注意:** 上面脚本中`是反引号,而不是单引号',不要看错了哦。 ### **拆分字符串** ``` #!/bin/bash read -p "Enter any string separated by space: " str #读取字符串的值。 IFS=' ' #将空格设置为分隔符。 read -ra strArr <<<"$str" #将字符串读取到数组中,并由 IFS 分配分隔符。 for i in "${strArr[@]}"; #遍历访问数组中的每个元素。 do echo "$i" done #执行后得到以下结果: Enter any string separated by space:welcome to W3Cschool welcome to W3Cschool # 方法2readarray -d read -p "Enter any string separated by colon(:) " str #读取字符串的值,并将分隔符设置为 : 。 readarray -d : -t strArr <<<"$str" #根据设置的分隔符 : 来拆分字符串。 printf "\n" #遍历打印输出数组中的每一个值 for (( n=0; n < ${#strArr[*]}; n++ )) do echo "${strArr[n]}" done #结果: Enter any string separated by colon(:) welcome:to:W3Cschool welcome to W3Cschool #方法3:您还可以使用tr命令来分割字符串。tr用于在原有定界符的基础上,对字符串进行拆分。 str="welcome;to;W3Cschool!" #定界符 ; arr=($(echo $str | tr ";" "\n"))#将定界符定义给 tr for i in "${arr[@]}" do echo $i done #执行后得到以下结果: welcome to W3Cschool! ``` ### **字符串运算符** #### `=`等于运算符,等于时返回`true` #### `!=`不等于运算符,不等于时返回`true` #### `-n`,字符串长度不为零时返回`true` #### `-z`字符串长度为零时。返回`true`。 #### `-str`不为空时,返回`true` ``` Str1="ab" Str2="a" if [ $Str1 = $Str2 ]; then echo "True" else echo "False" fi if [[ $Str1 != $Str2 ]]; then echo "True" else echo "False" fi if [ -n $Str ]; then echo "True" else echo "False" fi if [ -z $Str ]; then echo "True" else echo "False" fi if [ -str $Str ]; then echo "True" else echo "False" fi ```