写在最前边:在bash中数据类型有两种,分别是数值型和字符型。其中字符型是默认的。

1、算数运算

  · 运算符

  · 语法

  1.1、运算符:+、-、*、/、%、**

    注意:有些时候 *(乘号)需要转义

  1.2、语法:有以下几种方式

    VAR为变量名,expression为算数表达式

    let VAR=expression

    VAR=$[expression]

    VAR=$((expression))

    VAR=$(expr argu1 argu2 argu3)

    语法示例

    

2、增强型赋值运算:在自身基础上做赋值运算

  · 运算符

     · 语法

  2.1运算符:+=、-=、*=、/=、%=,++,--

  2.2语法:

    let i=$i+n ——>let i+=n

    自增:let i=i+1 ——> let i++

    自减:let i=i-1 ——>let i--

    自增示例:

    

3、条件测试:编写测试机制来判断条件是否满足

  · 利用命令的返回值来判断

  · 测试表达式判断

  · 组合测试条件

  

  3.1、利用命令的返回值来判断:执行一条命令他的运行结果可以使用echo $?查看

    0:成功

    1-255:失败

  3.2、测试表达式判断

    · 语法

    · 测试类型

    3.2.1、语法:

      test expression :test为关键字

      [ expression ]:expression两边必须有空格

      [[ expression ]]:expression两边必须有空格

    3.2.2、测试类型:数值测试、字符串测试、文件测试

      数值测试:数值比较

        -eq:是否等于(equal)

        -ne:是否不等于(not equal)

        -gt:是否大于(greater than)

        -ge:是否大于等于(greater equal)   

        -lt:是否小于(little than)

        -le:是否小于等于(little equal)

        数值测试示例

        

      字符串测试:字符串要用引号引起来,最好使用[[ expression ]]

        ==:是否等于

        !=:是否不等于

        >:是否大于

        <:是否小于

        =~:左侧字符串是否能被右侧的pattern所匹配

        -z:判断指定字符串是否为空。空为真,不空为假

        -n:判断指定字符串是否不空。不空为真,空为假

      字符串测试示例:

        

        由一下三个命令可以看出只有[[ "a" > "b" ]]返回值是正确的所有字符串要引起来切使用[[ expression ]]

      

        -z和-n使用示例

        

      文件测试:

        存在性测试:存在为真不存在为假

          -a FILE

           -e FILE

        文件类型测试

          -b FILE:文件是否存在,且文件类型为块设备文件

          -c  FILE:文件是否存在,且文件类型为字符设备文件

          -d FILE:文件是否存在,且为目录文件

          -f  FILE:文件是否存在,且为普通文件

          -h 或-L FILE:文件是否存在,且为符号链接文件

          -p FILE:文件是否存在,且为命名管道文件

            -S FILE:文件是否存在,且为套接字文件

        文件权限测试

          -r FILE:文件是否存在,且对当前用户可读

            -w FILE:文件是否存在,且对当前用户可写

          -x FILE:文件是否存在,且对当前用户可执行

        特殊权限测试:

          -u FILE :文件是否存在,且拥有suid权限。

          -g FILE:文件是否存在,且拥有guid权限。

          -k FILE:文件是否存在,且拥有sticky权限。

        文件是否有内容

          -s FILE :是否不空。

        时间戳:

          -N FILE:文件自上一次读操作后是否被修改过。

        从属关系测试:

          -O:当前文件是否为文件的属主。

          -G:当前用户是否属于文件的数组。

        双目运算:文件新旧测试

          FILE1 -ef FILE2:两个文件是否只想同一个文件系统的相同inode的硬链接

          FILE1 -nt FILE2:文件1是否比文件2新

          FILE1 -ot FILE2:文件1是否比文件2旧

  3.3、组合测试条件:

    逻辑运算:有两种方式

      第一种

        COMMAND1 && COMMAND2

        COMMAND1 || COMMAND2

        !COMMAND

      第二种

        EXPRESSION1 -a  EXPRESSION2

        EXPRESSION1 -o  EXPRESSION2

        !EXPRESSION

  组合测试练习:将当前主机名保存在nameHost中,若主机名为空或者主机名为localhost.localdomain,则修改主机名为master

    

shell编程其他文章请点击下边链接

   

          

最新文章

  1. SpaceSniffer 硬盘透视软件
  2. 阿里资深工程师分享支付宝热补丁技术—— AndFix原理
  3. 在Linux中安装JDK的步骤
  4. js实现图片自动切换效果。
  5. 3.2:pandas数据的导入与导出【CSV,JSON】
  6. OpenWRT推理client线上的数
  7. petshop4.0 其中详细解释(系统架构)
  8. hdu 5072 Coprime(同色三角形+容斥)
  9. hdu_5965_扫雷(递推)
  10. TortoiseGit - 处理冲突
  11. Python爬虫(2):urllib库
  12. NetCore 控制台读取配置文件
  13. Ionic app 上传图片之webApi接口
  14. tf 常用函数 28原则
  15. HDU1850 尼姆博弈求可行方案数目
  16. canvas学习-----1px线条模糊问题
  17. 【做题】agc008f - Black Radius——计数&amp;讨论&amp;思维
  18. memcached的部署
  19. 推荐一款idea 翻译插件 ECTranslation
  20. Oracle安装部署之命令建库

热门文章

  1. django-ckedit
  2. django-URL之path标准语法(三)
  3. jquery复习
  4. SpringBoot整合MybatisPlus3.X之分页插件(四)
  5. POJ2431 优先队列+贪心 - biaobiao88
  6. reduce,map,filter 的用法
  7. vue项目中v-for渲染失败
  8. git .gitignore详解
  9. Unity1-HellowWord
  10. NOIP模拟 17