美文网首页
Bash tips - condition statements

Bash tips - condition statements

作者: MwinxAxniwM | 来源:发表于2018-09-12 15:51 被阅读0次

    bash中的特殊字符

    • 注释

    • ; 分号作为命令行的分隔符
    • ;; case终止符
    • . 等价于source
    • " 和 ' 双引号部分引用,单引号全引用
    • , 连接一系列的算术操作
    • \ 转义符
    • / 文件路径分隔符
    • ` 命令替换
    • : 空命令等价于NOP
    • ! 取反操作
      • 作为文件名匹配
    • ? 测试操作符
    • 变量替换,用于引用变量内容{} 是参数替换,*,@是位置参数,$? 是退出状态码变量,$$是进程id变量,保存所在脚本的进程 ID
    • () 组命令,作为一个子shell来运行
    • {} 代码块,匿名函数
    • [] 条件测试
    • [[]] 测试表达式在括号内
    • & 后台命
    • && 与逻辑操作
    • || 或操作
    • | 管道操作
      • 选项前缀
    • = 等号赋值操作
      • 加号
    • % 取模
    • ~ home目录
    • ~+当前工作目录,$PWD
    • ~- $OLDPWD
    • ^ 行首
    • 重定向


    bash中的变量

    • 变量赋值
      • =
      • let a=8+3
      • read -p "input a num: " n
      • 命令替换赋值
      • $(var)
    • 变量类型
      • 整型
      • 字符串
      • 局部变量只在代码块或者函数中可见
      • 环境变量将影响用户接口和shell行为
    • 位置参数
      • $0 脚本自身名称
      • $1 第一个参数
      • 9之后就必须用大括号{10}
      • *和@ 都表示所有的位置参数
      • shift命令会重新分配位置参数,所有参数左移一个位置
      • 变量替换 变量的名字就是变量保存值的地方,引用变量的值就叫做变量替换\

    bash条件判断

    • if/then结构用来判断命令列表的退出状态码是否为0
      • [[ ... ]]扩展测试命令 [[ a -ltb ]]
      • 条件判断主要判断的是条件是否为真或者假
      • test、/usr/bin/test、[ ]和/usr/bin/[都是等价命令
    if [ condition1 ]
    then
        command1
        command2
        command3
    elif [ condition2 ]
    # 与else if一样
    then
        command4
        command5
    else
        default-command
    fi
    
    
    • 使用[[ ... ]]条件判断结构而不是[ ... ],能够防止脚本中的许多逻辑错误

    • 测试操作符

      • -e 文件存在

      • -a 文件存在

      • -f 文件存在,一般文件

      • -s 文件大小不为0

      • -d 一个目录

      • -b 块设备

      • -c 字符设备,键盘/声卡等

      • -p 管道

      • -h 符号链接

      • -L 符号链接

      • -S socket

      • -t 文件描述符关联到一个终端设备上

      • -r 文件可读

      • -w 文件可写

      • -x 文件可执行

      • -g 标记了sgid

      • -u 标记了suid

      • -k 设置了sticky位

      • -O 判断是否是文件owner

      • -G 文件gid是否和你相同

      • -nt 新

      • -ot 旧

      • -ef 相同文件的硬链接

      • ! 反转测试结果

      • 二元比较操作符:

        • -eq
        • -ne
        • -gt
        • -ge
        • -lt
        • -le if [ "a" -le "b" ]
        • (("a" >= "b"))
          - -a if [ "exp1" -a "exp2" ]
          - -o

      • 字符串比较:

        • = if [ "a" = "b" ]
        • ==
        • !=
        • -z 为null
        • -n 不为null

    相关文章

      网友评论

          本文标题:Bash tips - condition statements

          本文链接:https://www.haomeiwen.com/subject/hjavgftx.html