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
 
 
 
 
 
posted @ 2018-09-19 22:29  Avention  阅读(125)  评论(0编辑  收藏  举报