shell编程之引号以及字符串

目录

一:引号

1:概念

2:注意

3:例子

二: 字符串

1:获取长度

2:截取

3:替换单个

4:替换所有

5:删除


一:引号

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

 

Guess you like

Origin blog.csdn.net/weixin_50691399/article/details/121388355