2.5.2 变量
变量(variable)就是为某个信息片段所起的名字,例如 first_name 或 driver_lic_no 。
所有程序语言都会有变量,Shell也不例外。每个变量都有一个值(value),这是由你分配给变量的内容或信息。在Shell的世界里,变量值可以是(而且通常是)空值,也就是不含任何字符。空值就是null。
Shell变量的名称的开头是一个字母或下划线,后面可以接着任意长度的字母、数字或下划线。变量名称的长度并不限制。Shell变量可用来保存字符串值,所能保存的字符串长度没有限制。
[many@avention my_sh]$ myvar=this_is_a_long_string_that_does_not_mean_much 分配变量值
[many@avention my_sh]$ echo $myvar 打印变量值
this_is_a_long_string_that_does_not_mean_much
变量赋值的方式:先写变量名,紧接着=,最后是变量值。=前后完全没有任何的空格。如变量值中间含有空格,请为变量值加上引号。
[many@avention my_sh]$ first=isacc middle=bashevis last=singer 单行可以进行多个变量定义
[many@avention my_sh]$ fullname="isaac bashevis singer" 变量值中包含空格时需要引号
[many@avention my_sh]$ oldname=$fullname 此处不需要引号
变量引用的方式:需于变量名称前面加上 $ 字符。
[many@avention my_sh]$ echo $oldname
isaac bashevis singer
当变量作为第二个变量的新值时,不需要使用双引号,但是使用双引号也可。但将几个变量连接起来时就需要使用双引号。
[many@avention my_sh]$ fullname="$first $middle $last"
[many@avention my_sh]$ echo $fullname
isacc bashevis singer
shell字符串:
shell编程中最常用的数据类型(除了数字和字符串,也没啥其他类型可用了),字符串可以用单引号、双引号、也可以不要引号。
单引号字符串的限制:
1 单引号中的任何字符都会原样输出,单引号字符串中的变量是无效的;
2 单引号字符串中不能出现单引号(不能用转义字符)
双引号的优点:
1 双引号中可以有变量
2 双引号中可以出现转义字符
在定义变量时,如果某个变量定义过后不允许改变变量的值,可以将其设置为只读变量
myUrl="http:/www.baidu.com"
readonly myUrl
删除变量用unset命令,注意该命令不能删除只读变量
变量类型:
1 局部变量:在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能跟访问局部变量。
2 环境变量:所有的程序,包括shell启动的程序,都能访问环境变量。必要的时候shell脚本也能定义环境变量。
3 shell变量:是由shell程序设置的特殊变量,其中一部分是环境变量,另一部分是局部变量。
拼接字符串:
[many@avention test]$ export your='2000'
[many@avention test]$ echo $my$your
10002000
获取字符串的长度:
[many@avention test]$ echo ${#your}
4
提取子字符串:
[many@avention test]$ echo ${your:1:2}
00
查找子字符串:
查找字符串i的位置,子字符串的首字符第一次出现的位置。
[many@avention test]$ string="avention is a great company"
[many@avention test]$ echo `expr index "$string" i`
6