目录
一:引号
1:概念
单引号:按原字符串输出
双引号:可以引用变量,拥有特殊含义的内容
拼接:连续获取变量
2:注意
如果有多个引号,连续的形成一对 引号中使用其他引号,其他引号做字符串使用
符号有默认显示的例如:# *等
符号有默认不显示的加\转义符改变他的默认不显示改为现实
3:例子
1:输出变量和默认显示的符号
#!/bin/sh
name=zs
age=18
echo '$name$age'
echo "$name$age"
echo "$name#$age"
echo "$name+$age"
2:输出变量和不默认显示的符号
#!/bin/sh
name=xx
age=18
#会将nameis当成一个变量
echo "$nameis$age"
echo "$name is $age"
echo "${name}is$age"
echo "${name}is${age}"
echo "${name}${age}"
echo "$name '' $age"
echo "$name"$age""
echo "$name\"$age\""
由上图可知以后在引用变量的时候最好把变量用{}阔起来,可以用空格来进行隔开变量和字符。
二: 字符串
1:获取长度
格式:
${#变量}
#!/bi/sh
str=abcdefg
echo ${#str}
2:截取
格式:
${变量:开始位置:长度}
注意:
${str::5}:从0获取5个
${str:0}:从0获取到末尾
#!/bi/sh
str=abcdefg
#获取长度
echo ${#str}
#从0开始获取到结束
echo ${str:0}
#从0开始获取6个
echo ${str:0:6}
3:替换单个
格式:
${变量/旧/新}
注意:从左向右替换第一个如果第一个不是即使后面有也不会替换)
#!/bi/sh
str=abcdefgabcdefg
str1=abc
str2=xyz
str3=def
echo $str
#将str2替换str1
echo ${str/$str1/$str2}
#将str3替换为str2
echo ${str/$str3/$str2}
4:替换所有
格式:
${变量//旧/新}(所有指的是字符串中出现的所有旧的)
注意:替换不会再原字符上进行修改,想要修改原字符串只能重新新赋值
#!/bi/sh
str=abcdefgabcdefg
str1=abc
str2=xyz
str3=def
echo $str
#将所有的str1替换为str2
echo ${str//$str1/$str2}
#将所有的str3替换为str2
echo ${str//$str3/$str2}
#输出str
echo $str
5:删除
从头删除
${变量#表达式}:匹配第一个删除
${变量##表达式}:匹配最后一个删除
#!/bi/sh
str=abcdefgabcdabc
str1=abc
str2=efg
echo ${str#$str1}
echo ${str#$str2}
echo $str
从尾开始删除
${变量%表达式}:匹配第一个删除
${变量%%表达式}:匹配最后一个删除
注意:从未开始删除,表达式还是从左向右去写
删除不会再原字符上进行修改,想要修改原字符串只能重新赋值
#!/bi/sh
str=abcdefgabcdabc
str1=abc
str2=efg
echo ${str%$str1}
echo ${str%$str2}
echo $str
echo ${str%%$str1}
echo ${str%%$str2}
echo $str