写在最前边:在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编程其他文章请点击下边链接

   

          

linux bash编程之算数运算和测试类型(第二篇)的更多相关文章

  1. Linux Bash编程

    在Linux系统介绍中,介绍了shell的多个版本,现在的Linux发行版基本都默认使用bash(Bourne Again shell),兼容Bourne shell (sh),本文将简要介绍Bash ...

  2. Linux - Shell - 算术表达式 - 算数运算

    概述 shell 中基于 $(()) 的 算数运算 背景 复习 shell 脚本 凑数吧 准备 环境 os centos7 1. 算数运算 代码 #!/bin/bash # $(()) 的数学运算, ...

  3. Linux Shell编程(5):整数运算

    http://blog.sina.com.cn/s/blog_6db275da0101asmf.html #!/bin/sh let a=$1+$2 b=$[$1+$2] ((c=$1+$2)) d= ...

  4. linux shell编程(二) 条件测试

    bash中常用的条件测试有三种 条件测试的表达式:[ expression ]  [[ expression]] 第一种:整数测试: -eq 测试两个整数是否相等,比如[ $A -eq $B ] -n ...

  5. linux bash编程之函数和循环控制

    函数:实现独立功能的代码段 函数只有在调用时才会执行 语法一: function F_NAME{ 函数体 } 语法二: F_NAME() { 函数体 } 函数的返回值: 默认函数返回值:函数执行状态返 ...

  6. Linux Shell编程(9)——特殊变量类型

    局部变量局部变量只在代码块或一个函数里有效 (参考函数里的局部变量)环境变量这种变量会影响Shell的行为和用户接口 在大多数情况下,每个进程都会有一个"环境表", 它由一组由进程 ...

  7. Linux网络编程:基于UDP的程序开发回顾篇

    基于无连接的UDP程序设计 同样,在开发基于UDP的应用程序时,其主要流程如下:   对于面向无连接的UDP应用程序在开发过程中服务端和客户端的操作流程基本差不多.对比面向连接的TCP程序,服务端少了 ...

  8. Linux网络编程:基于TCP的程序开发回顾篇《转》

    面向连接的TCP程序设计 基于TCP的程序开发分为服务器端和客户端两部分,常见的核心步骤和流程: 其实按照上面这个流程调用系统API确实可以完全实现应用层程序的开发,一点问题没有.可随着时间的推移,你 ...

  9. 【Linux 网络编程】常用套接字类型

    常用套接字类型<1>流式套接字(SOCK_STREAM)---TCP      提供面向连接的.可靠的传输服务,数据无差错,无重复的发送,      且按发送顺序接收.<2>数 ...

随机推荐

  1. OracleService服务不见了|OracleServiceXE服务没有了

    服务里面本来应该有OracleService的(或者是Express版的OracleServiceXE),而服务列表没有此服务项,而启动数据库时出现: TNS监听程序当前无法识别连接描述符中请求的服务 ...

  2. python模块的导入详解

    一:一个小问题:什么是模块? 我的理解是:有通用功能的文件的集合. 二:为什么要使用模块? 我们通常为了使自己以前写的东西保存下来,会把东西写入文件中保存下来,必要时我们把这些文件当脚本去执行,也可以 ...

  3. Text 尺寸获取

    获取text在当前文本内容下应该尺寸: 宽度:text.preferredWidth 高度:text.preferredHeight

  4. django-Views之使用视图渲染模板(五)

    render(<request>,<template_name>,context=-None,content_type=None,status=None,using=None) ...

  5. SpringCloud之Hystrix服务降级(七)

    Hystrix设计原则 1.防止单个服务的故障,耗尽整个系统服务的容器(比如tomcat)的线程资源,避免分布式环境里大量级联失败.通过第三方客户端访问(通常是通过网络)依赖服务出现失败.拒绝.超时或 ...

  6. 聊一聊Java中的各种运算符

    计算机之所以叫“计算机”,其最基本用途之一就是运算,对应刚刚接触Java的小伙伴而言,熟悉并掌握Java中的各种运算符及其在表达式中的运算优先级是十分必要的. 算术运算 算术运算主要用来处理数学中的加 ...

  7. 初学android小笔记(一)

    一:应用外观基础设置 (1)去掉标题栏:打开Android Manifest文件,将theme如下设置 (2)改应用图标:将icon指定图片改为想要的app图标即可 (3)改应用名字: 在Manife ...

  8. 说说 Python3 中的数字处理

    最近在处理订单相关的问题,踩了数字的一些坑,在此记录下. 其中有问题的代码涉及金额比较,便于描述,假设了下面一段代码 def is_paid(pay_price, paid_price): retur ...

  9. STL库学习笔记(一)——什么是STL?

    小明是一个很牛逼的程序员,在国际标准化组织工作. 他现在正在设计新一代的C++标准,标准中有一个待实现的函数:findMax(),这个函数要求使用者输入任何类型的数据,他都能找到最大的一个. 于是他想 ...

  10. P1041 传染病控制(noip2003)(搜索)

    呃呃呃...真的是惨烈啊... 今天的模拟赛是真的惨..... 本题,正解居然是搜索!!!!!! 蒟蒻自己歪歪了一个貌似是正解但是却连一半都没过的错解. 先解释一下自己的dp思路把. $f[i][u] ...