1.bash 算数运算
      + - * / %
      +=
      -=
      *=
      /=
     以上4种常用let ...
     ++/--sum;sum++/--
    算数运算 1.let A=2+3
         2.$[2+3]
          3.$((2+3))
          4.expr
2.语句的逻辑运算
  && 与  A&&B
  || 或  A||B
  ! 非  !A
      逻辑与(&&)和逻辑或(||) 均是短路操作符
      所谓短路操作符就是如果A语句足够完成对整个逻辑与 或者 逻辑或 语句的真假判断,任凭B语句写地多么高明高超高效都不会再执行了
          例如 对于逻辑与(&&) A&&B  如果A是假,无论B是什么 A&&B语句的结果都为假 B不再执行
               对于逻辑或(||) A||B  拂过A是真,无论B是什么 A||B语句的结果都为真 B不再执行
         总结:如果A发生 则执行 B;如果A未发生则不执行B 可写成 A&&B
             如果A不发生则执行B;如果A发生则不执行B   可写成 A||B
             记:1.未发生理解为假,发生理解为真;
               2.选择B不执行的条件判断句
               3.若是A发生则是A||B
                 若是A未发生则是A&&B
    注意:ping命令在Linux下不带任何参数是一直执行的 所以 用选项C来指定ping几个包
         ping -c1 -w1 172.16.17.29
   3种逻辑运算符的优先级
     !>&&>||
  注意,使用逻辑运算符时要慎用(),因为当前shell会为()中的内容打开一个子shell执行其内容 有时这会带来很×××烦
A&&B||C 表示如果A为真,则执行B 如果A为假,则执行C
更多组合具体分析
3.条件测试:
      判断某个命令是否可以执行成功,并且以此作为后面命令执行是否进行的条件
      有条件的执行,需要判断测试条件是偶满足
4.bash中如何进行条件测试
  测试表达式:1.[空格condition空格]
         2.[[空格condition空格]]
         3.test condition
  条件测试种类:
         1.整数测试 condition:1.num1空格-eq空格num2 num1是否等于(equal)num2
                    2.num1空格-gt空格num2 num1是否大于(greater than)num2
                    3.num1空格-ge空格num2 num1是否大于等于(greater than or equal)num2
                    4.num1空格-lt空格num2 num1是否小于(less than)num2
                    5.num1空格-le空格num2 num1是否小于等于(less than or equal)num2
                    6.num1空格-ne空格num2 num1是否不等于于(no equal)num2
          2.字符串测试 conditon:1.str1空格==|=空格str2 串str1是否匹配串str2
                      2.str1空格!=空格str2 串str1是否不匹配串str2
                      3.-z空格"string"  串string是否为空
                      4.-n空格“string”  串string是否不为空
          3.文件测试  condition:1.-e空格file   file是否存在
                      2.-f空格file   file是否为普通文件
                      3.-d空格file   file是否为目录
                      4.-L|h空格file file是否为一个链接(软链接)
                      5.-b空格file   file是否为块设备文件
                      6.-c空格file   file是否为字符设备文件
                     7.-r空格file   当前用户或shell是否对文件有读权限
                     8.-w空格file   当前用户或shell是否对文件有写权限
                     9.-x空格file   当前用户或shell是否对文件有执行权限
                注意:linux下目录与文件不能重名,使用-e file判断文件或目录存在更好
  组合条件测试
     [空格CONDITION1空格-aCONDITION2空格..]=[空格CONDITION1空格]&&[空格CONDITION2空格].. 与 条件同时满足时为真
     [空格CONDITION1空格-oCONDITION2空格..]=[空格CONDITION1空格]||[空格CONDITION2空格].. 或 条件至少有一个满足时为真
     !空格[空格CONDITION空格] 非 取反    
5.选择分支(使用if...fi)
 1.单选择分支
    if condition;then
     statement
     ...
    fi
 2.双选择分支
    if condition;then
     statement
     ...
    else
      statement
      ...
    fi                      
 3.多选择分支
    if condition1;then
     statement
     ...
    elif condition2;then
     statement
     ...
    elif condition3;then
     statement
     ...
    ...
    ... 
    else
      statement
      ...
    fi
  选择分支(使用case)
  case $VARIABLE_NAME in]
    value1)
      statement1
       ;;
    value2)
      statement1
       ;;
    value3)
      statement1
       ;;
    *)
      statement1
       ;;
  esac
  Attention
    1.每一个分支必须以“;;”结束
    2.value中可以使用..|..或
       3.*代表匹配除上述列出value1..n的任何字符,所以如果传递进来的参数是*,必须使用转义\*以示跟关键字“*"不同
5.for VARIABLE_NAME in LIST;do
    statement1
    ..
  done
  LIST三种形式
    1.{1..10}
    2.seq 1 10 需要带命令替换··反引号 seq 1 2 10 带3个参数表示从1开始,以2为增幅,到10结束
    3.1 2 3 4 5
    4.$VARIABLE_NAME 将遍历的内容存到一个变量里面并引用
6.while CONDITION;do
   statement1
   ..
 done
   Attention:1.条件满足时进入循环
        2.循环执行的语句一定要包含改变CONDITION的语句
 while read VARIABLE_NAME ;do
    statement1
    ..
 done</etc/passwd
   Attention:1.当文件为空 read VARIABLE_NAME 此命令的退出码不为0 即退出循环
        2.当文件遍历到最后一行后,再遍历,read VARIABLE_NAME的执行结果也不为0 即退出循环
7.until CONDITION;do
   statemeng1
   ..
 done
   Attention:1.条件满足是退出循环
        2.2.循环执行的语句一定要包含改变CONDITION的语句
8.循环控制条件
  break 中断循环,而执行循环体后面的语句
  continue 中断当前这一次循环,提前进入下一次循环

9.脚本如何接受参数
  #bash shell a b c...
  在shell文件中使用
    $1来引用第1个参数,$2来引用第2个参数,以此类推到第10个之后有所改变,${10}来引用第10个参数,...,${11}来引用第11个参数
10.设初值/默认值: FILE=$[FILE:-/etc/issue]
         当变量FILE为空时,将/etc/issue赋值给FILE
         当变量FILE不空时,将FILE本身赋给自己

函数 function
  目的:代码重用
  做法:在主程序的某个位置调用函数
定义函数(两种格式)
1.function F_NAME空格{
  body
  return 0;成功
      1-255;失败
  }
2.F_NAME空格{
  body
  return 0;成功
      1-255;失败
  }
调用函数
 F_NAME argument1 argument2
 Attention:函数体中调用函数参数,需要使用$1 $2...做法与shell-script调用外部参数类似

转载于:https://blog.51cto.com/bloodhero/789571

linux逻辑表达式,循环结构,函数相关推荐

  1. JavaScript入门→HTML引用JS、变量、表达式操作符、数组Array数组对象、选择结构循环结构、函数、JavaScript与JAVA区别

    插入引用JS 变量 表达式 操作符 数组 选择判断结构 循环结构 函数 JavaScript与JAVA区别 绝学无忧. 唯之与阿,相去几何? 善之与恶,相去何若? 人之所畏,不可不畏. 荒兮其未央哉! ...

  2. Java基础学习笔记(基本规范、变量定义、运算符、分支/循环结构、函数)

    文章目录 Java概述与环境搭建 Java历史 Java语言特点 Java执行机制 安装jdk 环境变量配置 乱码问题解决 基本规范 简单Java代码 编译运行 注释 语法规则 变量类型 声明方式 基 ...

  3. C语言基础1(数据类型、常变量、运算符、基本语句、选择结构、循环结构、数组、字符串、函数、指针)

    数据类型及运算 数据类型 一.整形(int) 整形变量的定义.输入和输出 打印格式 含义 %d 输出一个有符号的10进制int类型 %o(字母o) 输出8进制的int类型 %x 输出16进制的int类 ...

  4. Linux嵌入式学习---c语言之循环结构

    Linux嵌入式学习---c语言之循环结构 一.while语句循环 1.1一般形式 1.2累加求和 二.do...while语句循环 2.1do....while语句一般形式 2.2do....whi ...

  5. part4-2 流程控制二(循环结构,while、for循环,列表推导式、生成器推导式,常用工具函数,控制循环结构,4个简单实例)...

    循环语句在循环条件满足时,可反复执行某一段代码,这段被重复执行的代码称为循环体.在循环体中,需要在合适的时候把循环条件设置为假,从而结束循环:否则循环一直执行下去形成死循环.循环语句通常包含如下4个部 ...

  6. 循环数组函数c语言,C语言练习题2(分支结构循环结构数组函数2009-2012二级真题)..doc...

    C语言练习题2(分支结构循环结构数组函数2009-2012二级真题). C语言练习题(二) 一 选择题 1.有以下程序 #include void main() { int a: canf(" ...

  7. linux设置程序循环,linux shell编程学习笔记(7)流程控制之循环结构

    2.1.for循环 1)遍历/列表式循环 --根据变量的不同取值,重复执行命令序列 格式: for  变量名  in 值列表 do 命令序列 done 示例:输出在线的主机IP #!/bin/bash ...

  8. 【C语言】一维数组排序(函数,数组和循环结构语句)

    编写程序,实现一维数组排序.对一维数组按照从小到大的顺序排序.程序定义函数sort()来实现数组a的排序.函数原型如下: void sort(int a[], int n); 数组元素的输出调用Pri ...

  9. day05循环结构while循环嵌套控制条件语句方法(函数)

       循环结构:while循环 语句定义格式: 基本格式:                     while(判断条件语句){                         循环体语句;     ...

  10. 分支函数c语言,C语言练习题2(分支结构 循环结构 数组 函数2009-2012二级真题 ).doc...

    C语言练习题2(分支结构 循环结构 数组 函数2009-2012二级真题 ) C语言练习题(二) 一 选择题 1.有以下程序 #include void main() { int a: canf(&q ...

最新文章

  1. 惊艳!基于RNN的AI写词机竟能写出如此优秀的情诗!
  2. 实验室博士背着导师私发了两篇SCI,导师知道了会怎样?
  3. 吐血整理:论文写作中注意这些细节,能显著提升成稿质量
  4. Rserve 实现java与R的互通
  5. MySQL使用EXPLAIN分析SQL
  6. MongoDB学习总结(一) —— Windows平台下安装
  7. SAP Spartacus的CMSPageGuard
  8. Android 开发学习资源
  9. 贝叶斯机器学习:经典模型与代码实现
  10. c语言的数据类型复数型,C语言数据类型
  11. 在java中对null的理解
  12. 记:Ubuntu 14.04 安装32位库支持库失败
  13. android callmanager.java,如何使用Mobile-SDK-Android正确注销DJISDKManager和SDKManagerCallback应用程序?...
  14. 基于DS3231实时时钟模块的stm32简易闹钟
  15. 【Pix4d精品教程】Pix4DMapper 4.4.10/4.4.12/4.5.6经典手把手图文安装教程(附安装包下载)
  16. 上位机和下位机计算机联锁,上位机下位机各是什么意思?上位机下位机介绍
  17. 区块链三种网络地址btc\eth\fil
  18. 正则表达式大全(超详细正则校验内容)
  19. 手机便签怎么导出到另一个手机 便签内容一键传输方法
  20. 单目标优化算法测试函数python绘制及相关代码

热门文章

  1. 获取页面iframe里的元素
  2. Java语言String字符串课后作业
  3. ASCII 码表对照 2
  4. 设计模式之行为型备忘录模式
  5. 打造最便捷的异步分页技术(提供下载)
  6. Web 开发与设计师速查手册大全
  7. Android App性能测试之二:CPU、流量
  8. android之Fragment(官网资料翻译)
  9. vc中文件的读写操作
  10. 如何使用Movavi Screen Recorder在Mac上同时录制屏幕和音频