bash的基础特性 数值运算 数值大小比较 环境变量 位置变量 正则表达式

变量类型:
数据存储格式,储存空间大小,参与变量种类
字符型
数值型:
整数型
浮点型
强类型的:定义变量时必须指定变量类型,参与运算必须符合类型要求。
弱类型的:定义变凉时无需指定类型,所有的全是字符型,参与运算会自动进行隐式类型转换。变量无需定义,可直接使用...
bash中的变量种类:
根据变量的生效范围等标准
本地变量:生效范围为当前shell的生命周期,对当前shell其他之外的shell和当前shell的子shell都不生效,重启也失效。
环境变量:生效范围为,当前shell进程和其子shell都生效。
局部变量:生效范围为当前shell的某代码片段(通常指定函数)
位置变量:类似于grep中 前面I() 后面使用 \1, \2...这样的表达式,$1 $2 .....来表示 用于让脚本在脚本代码中调用通过命令传递给他的参数...
特殊变量:$? $0 其中$0在脚本中使用的话 为输出脚本名称

本地变量:
    变量赋值: name=“vlove”
                可以使用引号
                    1)可以直接给与字符串 name=usermane,如果有空格加双引号
                    2)也可是使用变量的值: name=$name 也可以使用双引号
                    3)可以直接使用命令的值:name=$(COMMAND)
                            第三个引用了命令执行的结果.... 必须使用小括号 或者使用反引号
                            name=·(command)·
            变量引用  $name  $(name)
                            强引用:单引号 ‘ ’  所见如所得,输出字符串,如果字符串中有变量,也不会输出变量的值
                            弱引用:双引号,“” 如果双引号里面的变量,会先输出变量的值。。。

bash的基础特性  数值运算 数值大小比较 环境变量 位置变量 正则表达式

    查看系统定义的所有变量:set
    取消定义的变量 unset “name”

    环境变量:
    变量声明,赋值
    就是比本地变量的时候多了一个声明
                    声明可以使用 export,declare
                    export name=username 或者 declare -x name=username
        引用变量和本地变量是一样的
        查看环境变量 export
                                                            env
                                                            printenv 也可以把本地变量追加为环境变量 export Uname
    销毁变量 也是 unset name

    bash有许多内建的环境变量
                PATH SHELL UID HOME  等等

变量命名法则:
            1、不能使用程序中的保留字,如:if for等
            2、只能使用大小写字谜,下划线数字,但是不能使用数字开头
            3、见名知意  ,有些编程人员的坏习惯,随便复制随便起名,现在知道可能明天就不知道了,所以起名要有特殊含义!

变量引用: $name , $(name)
" "弱引用 强引用‘ ’ 和上面类似
位置变量《》
在脚本代码中请用通过命令行传递给脚本的参数。。
$1 $2.......对应调用第1,第2.....等参数。
shift[n] 删除参数。。。br/>也有一些特殊的参数
$*:传递给脚本的所有参数
$@:传递给脚本的所有参数
$#:传递给脚本的参数的个数
实例:判断给出的文件的行数
#!/bin/bash
linecount="$(wc -l $1| cut -d' ' -f1)
echo "$1 hai $linecount lines"

bash的配置文件
            全局配置:对所有shell user都生效的
                    /etc/profile
                                    /etc/profile.d/*.sh结尾的所有文件
                /etc/bashrc
            个人配置:只对当前用户生效
                    ~/.bashrc
                    ~/.bash_profile
按照功能划分 也是两类
        profile类别  为交互式登录的shell提供配置
        全局 /etc/paofile 、 /etc/profile.d/*.sh
        个人:  ~/.bash_profile
            功用:
                            (1),用于定义环境变量
                            (2)、运行命令或者脚本
        bashrc类:为非交互式登录的shell提供配置
                        全局:/etc/bashrc
                        个人:~/.bashrc
                        功能使用:
                                    (1)、定义命令别名
                                    (2)、定义本地变量
                    交互式登录:直接通过终端输入账号密码登录
                                                            :使用su - username这样切换的用户
                    非交互式登录:su Username切换的
                                                                :图形界面下打开的终端(都是伪终端)
                                                                :执行脚本
                    后期编译安装mysql或者是apache的时候需要把他们的环境变量定义到系统的环境变量中,要不总得去他们自己的绝对路径中调用
                    这就需要修改/etc/profile配置文件 或者是其.d下面的配置文件
                    如:PATH=$PATH:/usr/local/mysql/bin
                    export PATH
                    修改完成后直接保存
                    但是必须要重新交互式登录shell 才能生效
                    当然也可是使用 . /etc/profile.d/*.sh来生效
                    也可以使用 source 绝对路径来生效 但是source会有一个副作用,就是source一次就会多一次路径

算数运算表达式(也是赋值后变量的引用)
            num1=1
            num2=2
                                算他们的合 则是 
                                var= $[$num1+num2]var=$(($num1+num2))
在一个数值范围内随机取出数字,(好像有的面试题中有)
                                这个就用到了bash中的内建变量
                                随机数生成器$RANDOM
        在80以内随机取值 例如:
        echo $[$RANDOM%80+1]后面的+1  是因为前面的80 只到79
        其实也是算数运算表达式

增强型赋值(符号)
+=,-=,*=,/=,%=

let 变量 符号

条件测试:
判断某需求是否满足,需要由测试机制来实现:
专用的测试命令表达式需要由测试命令辅助完成测试过程:

                测试命令:
                            text EXPRESSION
                            [ EXPRESSION ]
                                [[ EXPROSSION ]]
        中括号之间前后必须要有空格
        数值测试:
        gt大于
        ge大于等于 
        eq 是否等于 
        ne 是否不等于 
        lt 小于 
        le是否小于等于
        字符串测试:(在使用for循环的时候会用到,判断字符串是否为空等)
        ==:是否等于
        >:是否大于
        <:是否小于
        -z:是否为空,空为真
        -n:测试字符串是否不空,不空则为真
        !=:是否不等于
        =~:左侧字符串是否能被右侧的PATHERN所匹配
                        此表达式一般要使用[[  ]]  双中括号           

bash的基础特性  数值运算 数值大小比较 环境变量 位置变量 正则表达式
以上判断了变量name的第一个字母是否为f
***用于字符串比较的其中的操作数都要使用引号

bash的基础特性  数值运算 数值大小比较 环境变量 位置变量 正则表达式
练习:写一个脚本
接受一个文件路径作为参数
如果参数个数小于1,则提示用户至少给一个参数。。。
如果岑姝个数不小于1,则显示第一参数所指向的文件中的空白行的行数

bash的基础特性  数值运算 数值大小比较 环境变量 位置变量 正则表达式

猜你喜欢

转载自blog.51cto.com/12529218/2285207