shell 字符串
目录
shell 字符串
shell 字符串方法
shell 字符串案例
shell字符串
shell字符串是shell中最常用的变量类型。字符串可以用单引号、双引号、不用引号。
单引号
name='hello world'
单引号字符串的特点:
1)单引号中的字符都会被原样输出,单引号中的变量是无效的
2) 单引号中的字符串中不能出现一个单独的单引号,可以成对出现作为字符串的拼接
双引号
name="zsh" str="hi, are you \"${name}\"? \n" echo -e $str
输出结果:\n为换行。
# bash ./test.sh hi, are you "zsh"?
双引号的特点:
1)双引号里可以使用变量
2)双引号里可以出现转义字符
shell 字符串方法
字符串拼接
name="zsh" str="hi, "${name}"!" str2="hi, ${name}!" str3="${str} ${str2}" echo $str3 echo str str2
字符串长度
note:空格也是
例如:获取下列字符串的长度,结果:11
str="hello world" echo ${#str}
字符串截取
1. 从指定位置截取
1.1 从左到右截取
${str:start:length}
说明:从0开始,str表示被截取的字符串,start表示开始,length表示截取的长度。
例如:从1开始截取4个字符,结果:ello
str="hello world" echo ${str:1:4} # result: ello
1.2 从右到左截取
${str:0-start:length}
说明:从右边开始计数时,起始值是1。
列如:
str="hello world" echo ${str:0-3:2} #result: rl
2. 从指定字符截取
2.1 使用 # 号截取右边字符
# 号可以截取指定字符右边的所有字符
${str#*chars}
说明:str表示被截取的字符串,chars表示指定的字符,*通配符表示任意长度的字符串
*chars表示忽略左边所有的字符只截取chars右边的字符。
列如:
str="hello world" echo ${str#*w} # result: orld
2.2 使用 % 号截取左边字符
使用 % 号截取指定字符的左边所有字符。
${str%chars*}
列如:
str="hello world" echo ${str%ll*} # result: he
字符在字符串的位置
原则:重1开始
例如:查找lw在字符串str中的位置,先出现那个字符就打印那个字符的位置,结果:3
str="hello world" echo `expr index "$str" lw`
shell 字符串案例
1. shell 字符串倒序
方法一:使用切片
#!/bin/bash str="abc" for ((i=${#str};i>=0;i--)) do str="${str:$i:1}\c" echo -e "$str\n" done
方法二:使用数组
#!/bin/bash str="abc" str=`echo $str | sed 's/./& /g'` array=($str) len=${#array[@]} for ((i=$len - 1;i>=0;i--)) do if [ $i == 0 ] then echo "${array[$i]}" else echo -e "${array[$i]}\c" fi # echo -e "${array[$i]}\c" done
参考:
https://www.cnblogs.com/sinicheveen/p/16502115.html