• shell脚本编程-特殊字符


    Shell中除了普通字符外,还有很多具有特殊含义和功能的字符

    1.通配符

    * : 任意长度的字符串

    ? : 匹配任一单个字符

    []: 匹配其中的任意一个字符,例如:[abc]匹配a或b或c, 也可这样表示[a-z], 但 '-' [] 外只是一个普通字符, 和 在[]中也变成了普通字符.

    2.引号

    单引号' : 称为 强引用 或 全引用, 在'...' 中的所有字符都视作普通字符,包括($)()(`),但 '  不能出现在'...'中,否则shell无法判断单引号的起始位置.

    双引号": 称为 弱引用 或 部分引用, 在"..."中除了($)()(`)保留其特殊用途外,其余字符都作为普通字符处理.

    3.注释符

    # : 以#开头的部分Shell解释器都会略过.但#!除外.

    #!: 其后跟执行此脚本的可执行程序(解释器),而且#!必须在脚本的第一行.

    4.大括号

    在shell中{}用法很多,最常用的就是 引用变量原型 例如:${VAR}(这是推荐引用变量的方法)

    大括号的变量扩展:

    ${VAR} 取出变量VAR的值
    ${VAR:-DEFAULT} 如果VAR没有定义,则以$DEFAULT作为其值
    ${VAR:=DEFAULT} 如果VAR没有定义,或者值为空,则以$DEFAULT作为其值
    ${VAR+VALUE} 如果定义了VAR,则值为$VALUE,否则为空字符串
    ${VAR:+VALUE} 如果定义了VAR并且不为空值,则值为$VALUE,否则为空字符串
    ${VAR?MSG} 如果VAR没有被定义,则打印$MSG
    ${VAR:?MSG} 如果VAR没有被定义或未赋值,则打印$MSG

    ${!PREFIX*}

    ${!PREFIX@}

    匹配所有以PREFIX开头的变量
    ${#STR} 返回$STR的长度
    ${STR:POSITION} 从位置$POSITION处提取字串
    ${STR:POSITION:LENGTH} 从位置$POSITION处提取长度为$LENGTH的字串
    ${STR#SUBSTR} 从变量$STR的开头处开始寻找,删除最匹配$SUBSTR的字串
    ${STR##SUBSTR} 从变量$STR的开头处开始寻找,删除最匹配$SUBSTR的字串
    ${STR%SUBSTR} 从变量$STR的结尾处开始寻找,删除最匹配$SUBSTR的字串
    ${STR%%SUBSTR} 从变量$STR的结尾处开始寻找,删除最匹配$SUBSTR的字串
    ${STR/SUBSTR/REPLACE} 使用$REPLACE替换第一个匹配的$SUBSTR
    ${STR//SUBSTR/REPLACE} 使用$REPLACE替换所有匹配的$SUBSTR
    ${STR/#SUBSTR/REPLACE} 如果$STR以$SUBSTR开始,则用$REPLACE来代替匹配到的$SUBSTR
    ${STR/%SUBSTR/REPLACE} 如果$STR以$SUBSTR结束,则用$REPLACE来代替匹配到的$SUBSTR

    5.通配符扩展: (匹配多个排列组合的可能)

    比如坐标:{x1,x2,x3}{y1,y2,y3}

    # echo {x1,x2,x3}{y1,y2,y3}
    x1y1 x1y2 x1y3 x2y1 x2y2 x2y3 x3y1 x3y2 x3y3

    比如文件名:

    # touch file_{1,2}
    # ls file_{1,2}
    file_1  file_2

    6.语句块

    大括号还用于构造语句块,语句之间使用回车隔开

    7.控制字符(即Ctrl+KEY组合键一起使用,用于修改终端或文本显示,【控制字符不能再脚本中使用,只能与shell进行交互使用】)

    如表:

    Ctrl+B 退格但是不删除掉前面的字符
    Ctrl+C 终结当前前台作业
    Ctrl+D 结束符,可用于退出当前Shell或结束当前输入
    Ctrl+G 系统输出一声鸣叫
    Ctrl+H 退格且删掉前面的字符
    Ctrl+L 清屏,和clear效果一样
    Ctrl+I 水平制表符
    Ctrl+K 垂直制表符
    Ctrl+J 另起一行
    Ctrl+M 回车
    Ctrl+Z 暂停前台作业
    Ctrl+V 在vim中操作Visual Block
    Ctrl+U 删除光标到行首的所有字符

    8.其他

    1. 反引号 `: 命令替换,和$()的作用相同,表示返回当前命令的执行结果并赋值给变量
    2. 位置参数:
      1. $0:脚本名本身
      2. $1、$2...${10}:脚本的第一个参数、第二个参数....第十个参数
      3. $#:变量总数.
      4. $*、$@:显示所有的参数.
      5. $?:前一个命令的退出的返回值.
      6. $!:最后一个后台进程的ID号.
    3. 感叹号:通常为逻辑反,也可用于执行history中某个命令:例如:!100【为hsitory中行号为100的命令】
  • 相关阅读:
    Linux下使用curl查看http请求各阶段耗时
    yum list查看版本
    【k8s】XX 修改ipvs模式
    域名访问时间 测试脚本
    关闭WINDOWS自动检测互联网络
    win10专业版安装VMware workstation pro 16时提示“setup failed to generate the ssl keys necessary to run vmware”笔记
    手动启动MegaRAID Storage Manager v17.05.02.01 for Linux
    Java基于POI实现excel任意多级联动下拉列表——支持从数据库查询出多级数据后直接生成【附源码】
    C# 后台POST数据及API接收简记
    Linux 安装pycharm,清除缓存,scp传输文件
  • 原文地址:https://www.cnblogs.com/xccnblogs/p/4829278.html
Copyright © 2020-2023  润新知