版权声明:版权声明中 https://blog.csdn.net/lds_include/article/details/88909357
Linux的shell编程(二)-Shell 字符串、Shell 数组、Shell 注释
1、Shell 字符串
-
字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。
-
1)单引号
str='this is a string'
- 注意:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
- 注意:
-
2)双引号
class='1510A' str="this is \"$class\"! \n"
- 双引号的优点:
- 双引号里可以有变量
- 双引号里可以出现转义字符
- 双引号的优点:
-
3)拼接字符串
your_name="haha" greeting="hello, $your_name !" echo greeting
-
4)获取字符串长度
string="abcdef" echo ${#string} #输出 6
-
5)提取子字符串
- 以下实例从字符串第 2 个字符开始截取 4 个字符:
string="this is 1511A class" echo ${string:1:4} # 输出 his
-
6)查找子字符串
- 查找字符 “i 或 s” 的位置:
string="this is 1511A class" echo `expr index "$string" is` #输出 3 (注意""不能去掉)
- 注意:以上脚本中"`" 是反引号,而不是单引号 “’”,不要看错了哦。反引号`` 某些时候可用$()来替代。如:echo `ll` 等价于 echo $(ll)
- 查找字符 “i 或 s” 的位置:
2、Shell 数组
-
1、说明:
- bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
- 类似与C语言,数组元素的下标由0开始编号。
- 获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。
-
2、定义数组
- 在Shell中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:数组名=(值1 值2 … 值n)
- 例如:
array_name=(value0 value1 value2 value3) 或者 array_name=( value0 value1 value2 value3 ) 还可以单独定义数组的各个分量: array_name[0]=value0 array_name[1]=value1 array_name[n]=valuen 可以不使用连续的下标,而且下标的范围没有限制。
- 例如:
- 在Shell中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:数组名=(值1 值2 … 值n)
-
3、读取数组(没有也不会报数组越界异常,就是查询不出来)
- 读取数组元素值的一般格式是:${数组名[下标]}
- 例如:
valuen=${array_name[n]} 使用@或者*符号可以获取数组中的所有元素,例如: echo ${array_name[@]}
- 例如:
- 读取数组元素值的一般格式是:${数组名[下标]}
-
4、获取数组的长度
- 获取数组长度的方法与获取字符串长度的方法相同
- 例如:
# 取得数组元素的个数 length=${#array_name[@]} # 或者 length=${#array_name[*]}
- 例如:
- 获取数组长度的方法与获取字符串长度的方法相同
-
5、取得数组单个元素的长度
lengthn=${#array_name[n]}
3、Shell 注释
- 说明
- 以"#"开头的行就是注释,会被解释器忽略。(除第一行的解释器以外)
- sh里没有多行注释,只能每一行加一个#号。
- 注:
- 如果在开发过程中,遇到大段的代码需要临时注释起来,过一会儿又取消注释,怎么办呢?每一行加个#符号太费力了,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果。