欢迎关注 「Android茶话会」
- 回 「学习之路」 取Android技术路线经典电子书
- 回 「pdf」 取阿里&字节经典面试题、Android、算法、Java等系列武功秘籍。
- 回 「天涯」 取天涯论坛200+精彩博文,包括小说、玄学等
Shell是一种命令行解释器,它是在Unix和Linux操作系统中广泛使用的一种工具,也是我们日常开发工作中的好帮手,相较于Python,Shell语法简单非常好上手而且开箱即用无需纠结安装Python2还是Python3。下面将从 入门到实践详细介绍下Shell编程
本篇是入门篇
大纲图如下:
- ${变量名#匹配规则} 从变量开头进行规则匹配,将符合最短的数据删除。
- ${变量名匹配规则} 从变量开头进行规则匹配,将符合最长的数据删除。
- ${变量名%匹配规则} 从变量尾部进行规则匹配,将符合最短的数据删除。
- ${变量名%%匹配规则} 从变量尾部进行规则匹配,将符合最长的数据删除。
- ${变量名/旧字符串/新字符串} 变量内容符合旧字符串,则第一个旧字符串会被新字符串取代。
- ${变量名//旧字符串/新字符串} 变量内容符合旧字符串,则全部旧字符串会被新字符串取代。
讯享网
- ${string:position} 从string的 position 开始。
- ${string:position:length} 从position开始,匹配长度为 length
- ${string: -position} 从右边开始匹配。
- ${string:(position)} 从左边开始匹配。
- expr substr $string $postion $length 从 position 开始,匹配长度为 length
讯享网
- expr index$substring 从1开始计算索引位置
- expr match $string substr
从头开始匹配子串长度,如果没有匹配到则返回0,匹配到了返回匹配子串的长度
讯享网
讯享网
讯享网
讯享网
- 函数名后面的圆括号不加任何参数
- 函数的完整定义必须置于函数的调用之前
讯享网
讯享网
- 不做特殊声明,shell中变量都是全局变量
- 局部变量 使用 「local」 关键字,函数内外同时存在同名变量,则函数内部会覆盖函数外部变量
讯享网
讯享网
两种程式
每个程序之后;; 双分号结尾;以 case开头以esac结尾
讯享网
讯享网
bash的运算有以下几种方式
只能计算整数
语法格式: expr $num2
- num1 | num2 – num1 不为空且非0,返回 num1 ; 否则返回 num2
- num1 & num2 – num1 不为空且非0,返回 num1 ;否则返回0
- num1 < num2 – num1 小于 num2 ,返回1;否则返回0
- num1 <= num2 – num1 小于等于 num2 ,返回1;否则返回0
- num1 = num2 – num1 等于 num2 ,返回1;否则返回0
- num1 != num2 – num1 不等于 num2 ,返回1;否则返回0
- num1 > num2 – num1 大于 num2 ,返回1;否则返回0
- num1 >= num2 – num1 大于等于 num2 ,返回1;否则返回0
- num1 + num2 – 求和
- num1 - num2 – 求差
- num1 * num2 – 求积
- num1 / num2 – 求商
- num1 % num2 – 求余
let命令声明变量时 可以直接执行算术表达式
文件测试运算符用于检测Unix/Linux文件的各种属性
- -e $file exist 的缩写,表示文件是否存在。
- -d $file directory 的缩写,表示文件是否为一个目录。
- -f $file file 的缩写,表示文件是否是一个文件。
- -L $file Link 的缩写,表示链接。
- -r $file readable 的缩写,表示文件是否可读。
- -w $file writable 的缩写,表示文件是否可写。
- -x $file executable 的缩写,表示文件是否可执行。
- $file1 -nt $file2 表示文件 file1 是否比 file2 更新。
- $file1 -ot $file2 表示文件 file1 是否比 file2 更旧。
- $string1 = $string2 表示两个字符串是否相等。
- $string1 != $string2 表示两个字符串是否不相等。
- -z $string 表示字符串 string 是否为空。
- -n $string 表示字符串 string 是否不为空。
- $num1 -eq $num2 equal 的缩写,表示两个数字是否相等。
- $num1 -ne $num2 not equal 的缩写,表示两个数字是否不相等。
- $num1 -lt $num2 lower than 的缩写,表示 num1 是否小于 num2 。
- $num1 -le $num2 lower or equal 的缩写,表示 num1 是否小于或等于 num2 。
- $num1 -gt $num2 greater than 的缩写,表示 num1 是否大于 num2 。
- $num1 -ge $num2 greate or equal 的缩写,表示 num1 是否大于或等于 num2
- && 表示逻辑与,只要有一个不为真,整个条件测试为假。
- || 表示逻辑或,只要有一个为真,整个条件测试就为真。
- ! 表示反转测试条件。
讯享网
export 声明的变量即是环境变量

env命令和set命令区别:set命令可以查看所有变量,而env命令只能查看环境变量
讯享网
unset 变量名
set -u 调用未声明变量会报错 -x 执行之前会把命令先输出一次 +<参数> 取消魔偶个set曾启动的参数
如果命令不用反引号包含,命令不会执行,而是直接输出 只有用反引号包含的命令、使用${命令}的方式也是可以
讯享网
如果输出使用单引号,则$name原封不动输出 如果输出使用双引号,则输出变量name的值sc 反引号和双引号括起来的命令会正常执行; 反引号被单引号括起来命令不会执行当做普通字符串输出
用于命令替换,获取命令的返回值
讯享网
- ${}
用于变量替换
特殊变量替换
讯享网
- 回 「学习之路」 取Android技术路线经典电子书
- 回 「pdf」 取阿里&字节经典面试题、Android、算法、Java等系列武功秘籍。
- 回 「天涯」 取天涯论坛200+精彩博文,包括小说、玄学等
您的 点赞、评论、转发 是对我的巨大鼓励!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/145224.html