Bash 脚本结构化

  1     • if-then语句
  2         ○ bash将会运行if后面的命令,如果该命令运行结束的退出码是0(运行成功),执行then部分的命令
  3         ○ fi语句表示if语句到此结束
  4         ○ 在then后面可以使用多条命令(命令块),需要缩进
  5         ○ if-then-else语句
  6             § 当if后命令返回的退出码为0,执行then后命令,不为0,执行else部分命令
  7             § else也可以包含多条命令
  8     • 嵌套if
  9         ○ 可以使用elif语句代替嵌套的if-then语句让命令更清晰
 10         ○ 在elif语句中,紧跟其后的else语句术语elif代码块,它们不属于之前的if-then代码块
 11     • test命令
 12         ○ 数值,字符串,文件比较
 13         ○ 数值比较
 14             n1 -eq n2     检查 n1 是否与 n2 相等
 15             n1 -ge n2     检查 n1 是否大于或等于 n2
 16             n1 -gt n2     检查 n1 是否大于 n2
 17             n1 -le n2     检查 n1 是否小于或等于 n2
 18             n1 -lt n2     检查 n1 是否小于 n2
 19             n1 -ne n2     检查 n1 是否不等于 n2
 20             § 不能比较浮点数
 21         ○ 字符串比较
 22             str1 = str2     检查 str1 是否和 str2 相同
 23             str1 != str2    检查 str1 是否和 str2 不同
 24             str1 < str2     检查 str1 是否比 str2 小
 25             str1 > str2     检查 str1 是否比 str2 大
 26             -n str1 检查     str1 的长度是否非0
 27             -z str1 检查     str1 的长度是否为0
 28             § 字符串相等性
 29                 □ 测试大于或小于时,在大于号&&小于号前加上反斜杠,否则会被bash当成重定向符
 30                 □ 在比较测试中,大写字母被认为小于小写字母
 31                 □ -n判断字符串长度非0,-z判断字符串长度为0
 32         ○ 文件比较
 33             -d file     检查 file 是否存在并是一个目录
 34             -e file     检查 file 是否存在
 35             -f file     检查 file 是否存在并是一个文件
 36             -r file     检查 file 是否存在并可读
 37             -s file     检查 file 是否存在并非空
 38             -w file     检查 file 是否存在并可写
 39             -x file     检查 file 是否存在并可执行
 40             -O file     检查 file 是否存在并属当前用户所有
 41             -G file     检查 file 是否存在并且默认组与当前用户相同
 42             file1 -nt file2     检查 file1 是否比 file2 新
 43             file1 -ot file2     检查 file1 是否比 file2 旧
 44     • 复合条件测试
 45         ○ &&和||
 46     • if-then高级特性
 47         ○ 双括号命令
 48             § ((expression))    #expression可以是任意的标准数学运算符或标准表达式
 49             val++     后增
 50             val--     后减
 51             ++val     先增
 52             --val     先减
 53             !         逻辑求反
 54             ~         位求反
 55             **        幂运算
 56             <<        左位移
 57             >>        右位移
 58             &         位布尔和
 59             |         位布尔或
 60             &&        逻辑和
 61             ||        逻辑或
 62             § 注意,双括号中的数学运算符不需要转义
 63         ○ 双方括号
 64             § [[expression]]   #模式匹配
 65             § 匹配模式支持正则表达式
 66     • case语句
 67         ○ 代替多个if-then嵌套
 68         ○ case命令采用列表格式检查一个变量的多个值
 69         ○ *号会捕获所有与已知模式不匹配的值
 70     • for命令,列表迭代,类似Python的for循环
 71         for var in list
 72         do
 73             commmands(多条命令)
 74         done
 75         ○ 除非手动修改,var会保持最后一次迭代的值,直到脚本结束
 76     • 从命令读取值
 77         ○ 使用命令的输出作为变量
 78         ○ 将文件的路径,名称赋值给变量
 79     • 更改字符段分分隔符
 80         ○ 默认分隔符 空行,制表符,换行符
 81         ○ 临时改变环境变量IFS的值
 82         ○ 指定多个分隔符,只需要在给IFS赋值时将各个分隔符串起来
 83     • 用通配符读取目录
 84         ○ 强制使用文件匹配扩展
 85         ○ Linux中文件名中含有空格是合法的,要适应这种情况,应该将$file用双引号圈起来
 86     • C风格的for循环
 87         ○ 双括号避免和bash shell的语法发生冲突
 88         ○ 括号中的变量不用使用美元符,变量运算不需要进入expr,变量赋值可以有空格
 89         ○ 和C语言类似,在for循环中可以使用多个变量
 90     • while循环
 91         while test command
 92         do
 93             other commands
 94         done
 95         若test command的退出码为0
 96         执行commands
 97         ○ 方括号检查shell变量
 98         ○ 使用多个测试命令时,只有最后一个命令的退出码会被用来决定什么时候退出循环
 99     • until命令
100         ○ until与while相反,当返回一个不为0的退出码时,执行commands
101         ○ 当返回的退出码为0时,循环结束
102         until test command
103         do
104             other commands
105         done
106         ○ 使用多个测试命令时规则和while相同
107     • 嵌套循环
108         ○ 可以混用不同的循环方式(for,while,until)
109     • 循环处理文件数据
110         ○ ??????????
111     • 循环控制
112         ○ break
113         ○ continue
114     • 处理循环的输出
115         ○ done > output.txt   #将for命令的结果重定向到output.txt
116         ○ 重定向文件不存在则shell会创建一个该文件

转载于:https://www.cnblogs.com/CofJus/p/10174664.html

Bash shell - 2相关推荐

  1. AIX5.3安装bash shell

    一.下载bash shell,地址是:ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/bash/ 二.安装bash sh ...

  2. Bash shell

    一.认识bash shell 1.登录取得的shell就记录在/etc/passwd这个文件内 可以使用cat /etc/passwd查看 2.bash shell 功能 a. 命令记忆能力(hist ...

  3. bash shell命令(2)

    在上篇<bash shell命令(1)>中,介绍了几种简单的linux shell命令,今天继续介绍bash shell命令 本文地址:http://www.cnblogs.com/arc ...

  4. BASH SHELL 脚本基础

    什么是shell     Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言.命令解释程序及程序设计语言的统称. shell是用户和Linux内核之间的接口程序, ...

  5. 如何通过终端快速删除文件和目录(bash shell)[关闭]

    本文翻译自:How to remove files and directories quickly via terminal (bash shell) [closed] From terminal w ...

  6. 错误时自动退出bash shell脚本[重复]

    本文翻译自:Automatic exit from bash shell script on error [duplicate] This question already has an answer ...

  7. linux bash shell 判断变量是否在列表中

    1. 语法 双中括号[[]]是bash shell中的关键词,相对于[]有以下特点和优势: [[ ]] 结构比[ ]结构更加通用.在[[和]]之间所有的字符都不会发生文件名扩展或者单词分割,但是会发生 ...

  8. linux脚本获取当前用户,bash shell 获取当前正在执行脚本的绝对路径

    一般我们写Shell脚本的时候,都倾向使用绝对路径,这样无论脚本在什么目录执行,都应该起到相同的效果,但是有些时候,我们设计一个软件包中的工具脚本,可能使用相对路径更加灵活一点,因为你不知道用户会在哪 ...

  9. [Notes] Bash Shell特性

    bash shell的全称是Bourne Again SHell,是Bourne Shell 的增强版,而Bourne Shell 是Steven Bourne发展起来的第一个shell (说法引自& ...

  10. linux bash shell之declare

    linux bash shell之declare declare或typeset内建命令(它们是完全相同的)可以用来限定变量的属性.这是在某些编程语言中使用的定义类型不严格的方式.命令declare是 ...

最新文章

  1. linux ubuntu systemd-udevd进程 cpu占用过高 解决方法
  2. django admin search_fields
  3. HeartBeat?你到底要干什么!
  4. 移动端h5 顶部菜单栏_HTML5 移动端上 动态固定菜单栏的问题
  5. 关于java中getClass()和getSuperClass()的讲解
  6. java byte 梳理
  7. 猎豹浏览器打飞机_墙内最好浏览器,微软带来完整版谷歌浏览器,扩展、同步无限制!...
  8. iOS开发之各种动画各种页面切面效果
  9. java使用poi读取word(简单,简约,直观)
  10. 服务器系统更新失败进不了系统,第五人格更新后进不去怎么办 更新连接服务器失败...
  11. Proteus8.9 下载与安装教程
  12. 网站创业项目商业计划书的写法
  13. 全面拆解携程云原生实践,打造智能弹性的云端酒店直连系统!
  14. ubuntu下将eth3改为eth0及HWaddr的修改
  15. jar包太大?手把手教你分析 Maven 依赖,完成瘦身优化!
  16. 论文阅读-OneRel: Joint Entity and Relation Extraction with One Module in One Step- CCF A- AAAI 2022
  17. 怎么设置企业邮箱服务器端口,腾讯企业邮箱服务器配置及端口号设置
  18. 树莓派Ubuntu18.04下无线鼠标延迟问题解决
  19. Java核心技术 卷1 基础知识 学习笔记——第三章 java的基本程序设计结构
  20. JavaSE面向对象

热门文章

  1. C语言中typedef的六种用法
  2. Java中static的作用
  3. Mac 技术篇-Geany编辑器批量设置制表符为空格,geany设置默认制表符替换为空格
  4. Python 技术篇-调用浏览器访问指定网页,一行代码实现。非Selenium。
  5. 【POJ1321棋盘问题】【poj2251Dungeon Master】【poj3278Catch That Cow】【poj1426Find The Multi】
  6. How far away ? HDU - 2586
  7. 人眼中亮斑的检测、定位和去除(3)
  8. php检测http状态码,php回来HTTP状态码
  9. centos下配置gitosis服务器
  10. SQL优化(二)-- 慢查询