Bash shell - 2
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相关推荐
- AIX5.3安装bash shell
一.下载bash shell,地址是:ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/bash/ 二.安装bash sh ...
- Bash shell
一.认识bash shell 1.登录取得的shell就记录在/etc/passwd这个文件内 可以使用cat /etc/passwd查看 2.bash shell 功能 a. 命令记忆能力(hist ...
- bash shell命令(2)
在上篇<bash shell命令(1)>中,介绍了几种简单的linux shell命令,今天继续介绍bash shell命令 本文地址:http://www.cnblogs.com/arc ...
- BASH SHELL 脚本基础
什么是shell Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言.命令解释程序及程序设计语言的统称. shell是用户和Linux内核之间的接口程序, ...
- 如何通过终端快速删除文件和目录(bash shell)[关闭]
本文翻译自:How to remove files and directories quickly via terminal (bash shell) [closed] From terminal w ...
- 错误时自动退出bash shell脚本[重复]
本文翻译自:Automatic exit from bash shell script on error [duplicate] This question already has an answer ...
- linux bash shell 判断变量是否在列表中
1. 语法 双中括号[[]]是bash shell中的关键词,相对于[]有以下特点和优势: [[ ]] 结构比[ ]结构更加通用.在[[和]]之间所有的字符都不会发生文件名扩展或者单词分割,但是会发生 ...
- linux脚本获取当前用户,bash shell 获取当前正在执行脚本的绝对路径
一般我们写Shell脚本的时候,都倾向使用绝对路径,这样无论脚本在什么目录执行,都应该起到相同的效果,但是有些时候,我们设计一个软件包中的工具脚本,可能使用相对路径更加灵活一点,因为你不知道用户会在哪 ...
- [Notes] Bash Shell特性
bash shell的全称是Bourne Again SHell,是Bourne Shell 的增强版,而Bourne Shell 是Steven Bourne发展起来的第一个shell (说法引自& ...
- linux bash shell之declare
linux bash shell之declare declare或typeset内建命令(它们是完全相同的)可以用来限定变量的属性.这是在某些编程语言中使用的定义类型不严格的方式.命令declare是 ...
最新文章
- linux ubuntu systemd-udevd进程 cpu占用过高 解决方法
- django admin search_fields
- HeartBeat?你到底要干什么!
- 移动端h5 顶部菜单栏_HTML5 移动端上 动态固定菜单栏的问题
- 关于java中getClass()和getSuperClass()的讲解
- java byte 梳理
- 猎豹浏览器打飞机_墙内最好浏览器,微软带来完整版谷歌浏览器,扩展、同步无限制!...
- iOS开发之各种动画各种页面切面效果
- java使用poi读取word(简单,简约,直观)
- 服务器系统更新失败进不了系统,第五人格更新后进不去怎么办 更新连接服务器失败...
- Proteus8.9 下载与安装教程
- 网站创业项目商业计划书的写法
- 全面拆解携程云原生实践,打造智能弹性的云端酒店直连系统!
- ubuntu下将eth3改为eth0及HWaddr的修改
- jar包太大?手把手教你分析 Maven 依赖,完成瘦身优化!
- 论文阅读-OneRel: Joint Entity and Relation Extraction with One Module in One Step- CCF A- AAAI 2022
- 怎么设置企业邮箱服务器端口,腾讯企业邮箱服务器配置及端口号设置
- 树莓派Ubuntu18.04下无线鼠标延迟问题解决
- Java核心技术 卷1 基础知识 学习笔记——第三章 java的基本程序设计结构
- JavaSE面向对象
热门文章
- C语言中typedef的六种用法
- Java中static的作用
- Mac 技术篇-Geany编辑器批量设置制表符为空格,geany设置默认制表符替换为空格
- Python 技术篇-调用浏览器访问指定网页,一行代码实现。非Selenium。
- 【POJ1321棋盘问题】【poj2251Dungeon Master】【poj3278Catch That Cow】【poj1426Find The Multi】
- How far away ? HDU - 2586
- 人眼中亮斑的检测、定位和去除(3)
- php检测http状态码,php回来HTTP状态码
- centos下配置gitosis服务器
- SQL优化(二)-- 慢查询