---恢复内容开始---
一、字符串
字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。
1、单引号
str='this is a string'
单引号字符串的限制:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
2、双引号
- your_name='qinjx'
- str="Hello, I know your are \"$your_name\"! \n"
双引号的优点:
- 双引号里可以有变量
- 双引号里可以出现转义字符
转义字符
|
意义
|
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
|
空字符(NULL)
|
000
|
\ooo
|
1到3位八进制数所代表的任意字符
|
三位八进制
|
\xhh
|
1到2位十六进制所代表的任意字符
|
二位十六进制
|
注意:区分,斜杠:"/" 与 反斜杠:"\" ,此处不可互换
其中、\n是换行的意思,如果编辑好代码后,执行后,结果为:

发现的问题
若是直接在Linux中按行输入 your_name="wangjing"
str="Hello,I know you are \"$your_name\"! \n"
echo $str后为:Hello,I know you are "your_name"! \n
这样会输出str整个字符串,\n并没有起到换行的作用,若想在这种形势下\n 正确换行则需要
echo -e $str
这样输出的结果就换行了
因为Linux本身不认识反斜杠,你得再输出的时候告诉Linux你得反斜杠不是字符串,而是一个反斜杠

3、拼接字符串
- your_name="qinjx"
- greeting="hello, "$your_name" !"
- greeting_1="hello, ${your_name} !"
- echo $greeting $greeting_1
输出结果为:
4、获取字符串长度
- string="abcd"
- echo ${#string}
输出的结果为“”
5、提取子字符串
- string="alibaba is a great company"
- echo ${string:1:4}
输出结果为:
6、 查找子字符串
- string="alibaba is a great company"
- echo `expr index "$string" is`
结果:
解释:指string 后面的字符串 is 或者 si ,任意一个字符(i 或者 s)第一次出现在句子中的位置,首先出现的是i ,所以不管是si 还是 is ,都是第三。
---恢复内容结束---