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

 

命令排序

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

      

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

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

1
2
3
4
5
6
7
8
* 匹配任意多个字符 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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 @   smatterer  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示