Shell 数据类型及表达式


---恢复内容开始---

一、字符串

      字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。

  1、单引号

     str='this is a string'

     单引号字符串的限制:

  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。   

 2、双引号

  1. your_name='qinjx'
  2. 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、拼接字符串
  1. your_name="qinjx"
  2. greeting="hello, "$your_name" !"
  3. greeting_1="hello, ${your_name} !"
  4. echo $greeting $greeting_1

输出结果为:

 4、获取字符串长度

  1. string="abcd"
  2. echo ${#string} 

输出的结果为“”

 5、提取子字符串

  1. string="alibaba is a great company"
  2. echo ${string:1:4} 

输出结果为:

 

6、 查找子字符串

  1. string="alibaba is a great company"
  2. echo `expr index "$string" is`

结果:

解释:指string 后面的字符串 is 或者 si ,任意一个字符(i 或者 s)第一次出现在句子中的位置,首先出现的是i ,所以不管是si 还是 is  ,都是第三。

---恢复内容结束---


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM