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

浙公网安备 33010602011771号