• linux操作系统基础篇(八)


    shell脚本的变量以及正则表达式

    一.变量

    含义:程序的运行就是一些列状态的变量->用变量值的变化去表示。

    命名规则

    以字母或下划线开头,剩下的部分可以是:字母、数字、下划线.

    最好遵循下述规范:

    1.以字母开头
    2.使用中划线或者下划线做单词的连接
    3.同类型的用数字区分
    4.对于文件最好加上拓展名
    例如: sql_bak.tar.gz,log_bak.tar.bz2 

    1. 系统变量

    set 和 env区别
    set:显示所有变量
    env:环境变量

    2. 变量赋值

    VARNAME=VALUE
    echo $VARNAME
    删除变量 unset VARNAME

    3. 常用系统变量 

    PATH
    PWD
    LANG
    HOME
    HISTSIZE
    PS1
    IFS
    域分隔符 是空格,换行,TAB键的合集

    4.全局变量与局部变量

    [root@MiWiFi-R3-srv ~]# gender='male' #在爹这个位置定义一个局部变量gender
    [root@MiWiFi-R3-srv ~]# export money=1000 #在爹这个位置定义一个全局变量money
    [root@MiWiFi-R3-srv ~]# 
    [root@MiWiFi-R3-srv ~]# 
    [root@MiWiFi-R3-srv ~]# bash #切换到子bash
    [root@MiWiFi-R3-srv ~]# echo $gender #在儿子这里看它爹的局部变量gender,结果为空->看不到

    [root@MiWiFi-R3-srv ~]# echo $money #在儿子这里看它爹的全局变量money,可以看到
    1000
    [root@MiWiFi-R3-srv ~]# 
    [root@MiWiFi-R3-srv ~]# export hobby='piao' #在儿子这里定义一个全局变量hobby
    [root@MiWiFi-R3-srv ~]# exit #退出,进入爹的bash环境
    exit
    [root@MiWiFi-R3-srv ~]# echo $hobby #爹是看不到儿子的export的,儿子的儿子可以看到

    [root@MiWiFi-R3-srv ~]#

    5. 定义变量名的边界

    [root@MiWiFi-R3-srv ~]# rest_mem=20
    [root@MiWiFi-R3-srv ~]# echo ${rest_mem}%
    20%

    6. 数据类型

    bash中的变量无须声明,拿来就用.默认的变量都会是字符类型,还可以有数字类型,普通的脚本,这两种类型够用了

    二.正则表达式结合grep来说明

    正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。或者说:正则就是用来描述一类事物的规则。

    grep加参数

    1.grep

    参数

    -n  :显示行号
    -o  :只显示匹配的内容
    -q  :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容

    -l  :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc 
    -A  :如果匹配成功,则将匹配行及其后n行一起打印出来
    -B  :如果匹配成功,则将匹配行及其前n行一起打印出来
    -C  :如果匹配成功,则将匹配行及其前后n行一起打印出来
    --color
    -c  :如果匹配成功,则将匹配到的行数打印出来
    -E  :等于egrep,扩展
    -i  :忽略大小写

    -v  :取反,不匹配
    -w:匹配单词

    2.grep种类
    grep
    fgrep
    pgrep
    egrep

    3.正则介绍

    ^ 行首
    $ 行尾
    . 除了换行符以外的任意单个字符
    * 前导字符的零个或多个
    .* 所有字符
    [] 字符组内的任一字符
    [^] 对字符组内的每个字符取反(不匹配字符组内的每个字符)
    ^[^] 非字符组内的字符开头的行
    [a-z] 小写字母
    [A-Z] 大写字母
    [a-Z] 小写和大写字母
    [0-9] 数字
    < 单词头 单词一般以空格或特殊字符做分隔,连续的字符串被当做单词
    > 单词尾

    扩展正则 sed 加 -r 参数 或转义
    grep 加 -E 或 egrep 或转义
    AWK 直接支持 但不包含{n,m}
    可以使用--posix支持

  • 相关阅读:
    QT解决方案中新建动态链接库工程,且继承于QObject,解决无法生成moc_XXX.cpp文件的问题,解决工程之间的引用问题
    MATLAB Simulink中解算器的定步长和各模块采样时间之间的关系
    simulink使用MATLAB function的端口多出入多输出,输入输出向量设置
    simulink error:Error in default port dimensions function of S-function ‘XXXXXXXXXXX’. This function does not fully set the dimensions of output port 2.
    Git 问题:SSL certificate problem: self signed certificate
    git push失败:ssh:connect to host github.com port 22:Connection timed out
    戴尔笔记本插耳机听歌暂停后继续声音突然变大
    PDF阅读器和编辑器选择
    21天战拖记——Day15:填坑:行动任务项目的区别(2014-05-18)
    21天战拖记——Day14:如何养成一个习惯?(2014-05-17)
  • 原文地址:https://www.cnblogs.com/niubin/p/6939666.html
Copyright © 2020-2023  润新知