字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。
单引号
str='这是单引号'
需要注意的是:
1.单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的,
name="张三"
str='我的名字叫${name}'
echo $str
#他的输出是:我的名字叫${name}
2.单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
双引号
str="这是双引号"
在双引号中,可以出现变量,可以出现转义字符
name="张三"
str="我的名字叫${name}"
echo $str
#他的输出是:我的名字叫张三
name='张三'
str="我的名字叫\"$name\"。\n"
echo -e $str
#他的输出是:我的名字叫"张三"。
转义字符补充
| 转义字符 | 意义 | ASCII码值(十进制) |
| \a | 响铃(BEL) | 007 |
| \b | 退格(BS) ,将当前位置移到前一列 | 008 |
| \f | 换页(FF),将当前位置移到下页开头 | 012 |
| \n | 换行(LF) ,将当前位置移到下一行开头 | 010 |
| \r | 回车(CR) ,将当前位置移到本行开头 | 013 |
| \t | 水平制表(HT) (跳到下一个TAB位置) | 009 |
| \v | 垂直制表(VT) | 011 |
| \\ | 代表一个反斜线字符''\' | 092 |
| \' | 代表一个单引号(撇号)字符 | 039 |
| \" | 代表一个双引号字符 | 034 |
| \? | 代表一个问号 | 063 |
| \0 | 空字符(NUL) | 000 |
| \ddd | 1到3位八进制数所代表的任意字符 | 三位八进制 |
| \xhh | 十六进制所代表的任意字符 | 十六进制 |
拼接字符串
name="张三"
# 使用双引号拼接
str="我的名字叫"$name"!"
str_1="我的名字叫${name}!"
echo $str $str_1
# 使用单引号拼接
str_2='我的名字叫'$name'!'
str_3='我的名字叫${name}!'
echo $str_2 $str_3
:<<!
他们的输出分别是:
我的名字叫张三! 我的名字叫张三!
我的名字叫张三! 我的名字叫${name}!
!
获取字符串的长度
string="abcd"
echo ${#string}
#输出结果为4
提取子字符串
#第一个字符的索引值为 0。
string="runoob is a great site"
echo ${string:1:4} #从字符串第 2 个字符开始截取 4 个字符,
#输出结果为unoo
查找子字符
#查找字符 i 或 o 的位置(哪个字母先出现就计算哪个)
string="runoob is a great site"
echo `expr index "$string" io` #这里是反引号“`”而不是单引号“'”
#输出结果为4
补充:
变量截取
url="https://blog.amxsf.com/learn/shell/165.hmtl"
#从左边第0个字符开始,截取到第五个字符。
echo ${url:0:5}
#从左边第8个字符开始,一直截取到结束。
echo ${var:8}
#从右边算起第8个字符开始,截取后面的3个字符。
echo ${url:0-8:3}
#从右边第8个字符开始,一直截取到结束。
:<<!
运行结果如下:
https
blog.amxsf.com/learn/shell/165.hmtl
165
165.hmtl
!
变量截取符
#:表示从左边开始删除;一个 # 表示从左边删除到第一个指定的字符;两个 # 表示从左边删除到最后一个指定的字符。
%:表示从右边开始删除;一个 % 表示从右边删除到第一个指定的字符;两个 % 表示从左边删除到最后一个指定的字符
url="https://blog.amxsf.com/learn/shell/165.hmtl"
#从左边开始删除第一个//号及左边的所有字符,保留右边的字符。
echo ${url#*//}
#从左边开始删除,到最后一个/号及左边的所有字符,保留右边的字符。
echo ${url##*/}
#从右边开始,删除第一个/号及右边的字符,保留左边字符
echo ${url%/*}
#从右边开始删除,到最后一个/号及右边的字符,保留左边字符
echo ${url%%/*}
:<<!
运行结果如下:
blog.amxsf.com/learn/shell/165.hmtl
165.hmtl
https://blog.amxsf.com/learn/shell
https:
!

Comments NOTHING