WHCSRL 技术网

shell脚本简单使用

xshell里的引号

单引号 :所见所得 吃啥吐啥

双引号 : 里面的特殊符号会被解析

什么是shell?
命令解释器,负责翻译我们输入的命令,执行成功返回给用户
  • 1
linux默认的shell是(bash)
什么是shell脚本
命令的集合 很多可执行命令放在文本中成为shell脚本
  • 1
shell脚本规范(为自动化准备)
  • 必须放在同一的目录
  • 脚本必须以.sh结尾
  • 脚本开头有注释 #!/bin/bash 必须是第一行 以外的都是注释
  • **脚本的注释信息 **
  • 建议注释使用英文
  • 成对的符号和语法一次性写完
  • 脚本名称的命名 最好见名知意
shell特殊位置变量
  • $0:代表了脚本的名称,如果全路径执行 则脚本名称带全路径
    [root@localhost ~]#sh test.sh
    test.sh 
    
    [root@localhost ~]#sh /etc/test.sh
    /etc/test.sh
    
    [root@localhost ~]#basename /etc/test.sh
    test.sh
    
    test.sh内容:
    #!/bin/bash
    echo $0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • $n 脚本的第n个参数 0被脚本名称占用 从1开始 9后面的参数要用{} 括起来 {10}
    [root@localhost ~]#sh /etc/test.sh oldboy1 oldboy2
    oldboy1
    oldboy2
    
    test.sh内容:
    #!/bin/bash
    echo $1
    echo $2
    
    [root@localhost ~]#echo -e '#!/bin/bash
    echo `pwd`' >test.sh
    [root@localhost ~]#sh test.sh
    /root
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • $# 获取脚本传参的总个数
  • ∗ 获 取 脚 本 所 有 的 参 数 , 不 加 括 号 和 ∗ ∗ ∗ ∗ * 获取脚本所有的参数,不加括号和 ** ** @ 相同 加上双引号 则把参数视为一个参数
  • @ 获 取 脚 本 所 有 的 参 数 , 不 加 括 号 和 ∗ ∗ ∗ ∗ @ 获取脚本所有的参数,不加括号和 ** ** @ 相同 加上双引号 则把参数视为一个参数*
  • $? 获取上一条命令的返回结果 0为成功 非0失败
    [root@localhost ~]# echo 1
    1
    
    [root@localhost ~]# echo $?
    0
    [root@localhost ~]# ll xxxxx
    ls: cannot access xxx: No such file or directory
    
    [root@localhost ~]# echo $?
    2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • $$:获取脚本的PID
  • $!:获取上一个在后台运行脚本的PID 调试使用
  • $_:获取命令行最后一个参数
字符串的删除和替换
  • #** 从前往后匹配删除 ## 贪婪匹配 **
    [root@localhost ~]# url=www.baidu.com
    [root@localhost ~]# echo ${url}
    www.baidu.com
    [root@localhost ~]# echo ${url#*.}
    baidu.com
    [root@localhost ~]# echo ${url##*.}
    com
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • %%%%%%%%** 从前往后匹配删除 %%%%%%%%%%%%%%%% 贪婪匹配 **
    [root@localhost ~]# url=www.baidu.com
    [root@localhost ~]# echo ${url}
    www.baidu.com
    [root@localhost ~]# echo ${url%%%%%%%%.*}
    www.baidu
    [root@localhost ~]# echo ${url%%%%%%%%%%%%%%%%.*}
    www
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • /** 从前往后匹配删除 // 贪婪匹配 **
    [root@localhost ~]# echo ${url}
    www.baidu.com
    [root@localhost ~]# echo ${url/w/a}
    aww.baidu.com
    [root@localhost ~]# echo ${url//w/a}
    aaa.baidu.com
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
推荐阅读