2.7-egrep及bash中的变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.7-egrep及bash中的变量相关的知识,希望对你有一定的参考价值。

egrep及扩展的正则表达式

    egrep=grep -E

    grep [OPTIONS] PATTERN [FILE...]

    扩展正则表达式的元字符:

        字符匹配:

            .:

            []:

            [^]:

        次数匹配:

            *:

            ?:0或1次

            +:1次或多次

            {m}:匹配m次

            {m,n}:至少m,至多n次

        锚定匹配:

            ^:

            $:

            \<,\b

            \>,\b

        分组:

            ()

            后向引用:\1,\2,\3,......

        或者:

            a|b

                C|cat:C或cat

练习:

    1.显示当前系统root,centos或user1用户的默认shell和UID

    2.找出/etc/rc.d/init.d/function文件(centos6)中某单词后面跟一个小括号的行

    3.使用echo输出绝对路径,使用egrep取出其基名

        基名:

        # basename /etc/sysconfig/network

        network

        目录名:

        # dirname /etc/sysconfig/network

        /etc/sysconfig

        进一步地:使用egrep取出路径的目录名,类似于dirname命令的结果

    4.找出ifconfig命令结果中1-255之间的数值

    5.找出ifconfig命令结果中的ip地址


fgrep:不支持正则表达式搜索


bash的基础特性(4)

    变量类型:

        一旦定义了变量,则数据存储格式,存储空间大小,参与运算种类也同时被限定

        字符型:

        数值型:

            整型和浮点型

        强类型:定义变量时必须指定类型,参与运算必须符合类型要求,调用未声明的变量会产生错误

        弱类型:定义变量时无须指定类型,默认均为字符型:参与运算会自动进行隐式类型转换,变量无须事先定义可直接调用

             bash

bash中的变量的种类:

    根据变量的生效范围等标准

        本地变量:生效范围为当前shell进程,对当前shell之外的其它shell进程,包括当前shell的子shell进程均无效

        环境变量:生效范围为当前shell进程及其子进程(declare -x variable_name=value)

        局部变量:生效范围为当前shell进程中某代码片段(通常指函数)

        位置变量:$1,$2,$3......来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数

        特殊变量:$?,$0,$*,$#,[email protected]

    本地变量:

        变量赋值:variable=‘value‘

            可以使用引用:

                value:

                    (1) 可以是直接字串:name="username"

                    (2) 变量引用:name="$username"

                    (3) 命令引用:name=`COMMAND`,name=$(COMMAND)

        变量引用:${name},$name

            "":弱引用,其中的变量引用会被替换为变量值

            ‘‘:强引用,其中的变量引用不会被替换为变量值,而保持原字符串

        显示已定义的所有变量

            set

        销毁变量:

            unset name

    环境变量:

        变量声明,赋值:

            export name=VALUE

            declare -x name=VALUE

        变量引用:$name,${name}

        显示所有环境变量

            export

            env

            printenv

        销毁:

            unset name

        bash有许多内建的环境变量:PATH,SHELL,UID,HISTSIZE,HOME,PWD......


    变量命名法则:

        1.不能使程序中的保留字:例如if,for

        2.只能使用数字,字母及下划线,且不能以数字开头

        3.见名知义


    只读变量:变量不能被修改和撤销

        readonly name

        declare -r name

    

    位置变量:

        在脚本代码中调用通过命令行传递给脚本的参数:

            $1,$2....:对应调用第1,第2个参数

                shift[n]:换岗操作

            $0:命令本身

            $*:传递给脚本的所有参数(将所有参数当成一个字符串)

            [email protected]:传递给脚本的所有参数(将所有参数当成独立的字符串)

            $#:传递给脚本的参数个数

以上是关于2.7-egrep及bash中的变量的主要内容,如果未能解决你的问题,请参考以下文章

bash中的变量

llinux学习基础4之变量及条件测试

6.2 bash编程 整数测试及特殊变量

bash变量

Bash Shell中的通配符及转义字符的使用

shell脚本由基础变量及特殊变量($@$*$#等)到实战。