shell(命令排序_通配符_变量)

 

命令排序

  1. 在一行,敲多个命令,;不具逻辑判断
    .  /config ;  make ;makeinstall

      

  2. && || 具备逻辑判断,要看命令返回值 echo $?
    . /config &&   make && makeinstall
    ping -cl 10.18.42.1 &>  /dev/null &&   echo "up" ||   echo "down" # &>/dev/null 混合重定向
  3. 其它
    command & # 后台执行 
    command &>/dev/null #混合重定向 
    command1 && command2 命令排序,逻辑判断(上一个命令的返回值为真,才会执行) 

通配符(元字符) 表示的不是本意

* 匹配任意多个字符 ls in*; rm -rf *; rm -rf *.pdf;find / -iname "*-eth0"
? 匹配任意一个字符 touch love loove live 7ve;ll | ?ve
[] 匹配括号中任意一个字符 [abc][a-z][0-9][a-zA-Z0-9][^a-zA-Z0-9] 
() 在子shell中执行(cd /boot;ls) (umask 077;touch file  1000)
{} 集合 touch file {1..9}
 #mkdir /home/{111,222} ; mkdir /home/{333/{aaa,bbb},444}
  \ 转义符,让元字符回归本意
 # echo \*

变量

1.自定义变量
  定义变量:变量名=变量值 变量名必须以字母或下划线开头,区分大小写 ip1=192.168.2.115
  引用变量:$变量名 或 ${变量名}
  查看变量:echo $变量名;set (所有变量:包括自定义变量和环境变量)
  取消变量:unset变量名
  作用范围:仅在当前shell中有效
2.环境变量
  定义环境变量:方法一 export back_dir2=/home/backup
         方法二 export back_dir1 将自定义变量转换成环境变量
  引用环境变量:$变量名 或 ${变量名}
  查看环境变量:echo $变量名;env 例如env | grep back_dir2
  取消环境变量:unset 变量名
  变量作用范围:在当前shell和子shell有效
3.位置变量
  $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}
4.预定义变量
  $0 脚本名
  $* 所有参数
  $@ 所有参数  # 没有被双引号包含时,$*和$@作用一样,但被双引号包含时,$@无区别,$*会将所有参数看作一个整体
  $# 参数个数
  $$ 当前进程的PID
  $! 上一个后台进程的PID
  $? 上一个命令的返回值 0表示成功
5.变量的赋值方式
  1.显示赋值
    变量名=变量值
    示例:
    IP1=192.168.1.251
    today=`date+%F`
  2.read从键盘读入变量值
    read 变量名
    read -p "提示信息:" 变量名
  注意事项
    "" 弱引用
    '' 强引用
    `` 等价于 $()
    touch `date +%F`_file.txt
    touch $(date +%F)_file.txt
    disk_free3=$(df -Ph | grep '/$' | awk '{print $4}')
    disk_free3=`df -Ph | grep '/$' | awk '{print $4}'`
6.变量的运算
  1.整数运算
    expr expr 1+2
    $(())
      echo $((num1+num2))
      echo $((1+2))
    $[]
      echo $[5+2]
    let
      let sum=2+3;echo $sum;
      let i++;echo $i;
  2.小数运算
    echo "2*4" | bc
    echo "scale=2,6/4" | bc
    awk 'BEGIN{print 1/2}'
7.变量内容的删除和替换
  删除
    url=www.sina.com.cn
    echo ${#url}  获取变量的长度
    echo ${url}  标准查看
    echo ${url#*.}  从前往后,最短匹配 ,sina.com.cn
    echo ${url##*.} 从前往后,最长匹配,cn
    echo ${url%.*}  从后往前,最短匹配  www.sina.com
    echo ${url%%.*}  从后往前,最长匹配 www
  索引及切片
    echo ${url:0:5}  www.s
    echo ${url:5:5}  根据索引下标截取
    echo ${url:5}
  替换
    echo ${url/sina/baidu}  www.baidu.com.cn
    echo ${url/n/N}  www.siNa.com.cn
    echo ${url//n/N}  www.siNa.com.cN  贪婪匹配
  替代
    echo ${var1-aaaa}
    ${变量名-新的变量值}  变量没有被赋值:会使用新的变量值替代;变量有被赋值(包括空值):不会被替代
    ${变量名:-新的变量值} 变量没有被赋值(包括空值):都会使用新的变量值替代;变量有被赋值:不会被替代
    ${var3+aaa} ${var3:+aaa}
    ${var3=aaa} ${var3:=aaa}
    ${var3?aaa} ${var3:?aaa}
    

  

 

posted @ 2022-11-28 22:14  smatterer  阅读(70)  评论(0)    收藏  举报