Linux复习资料——一篇文章学会sh脚本的编写
目录
流程控制语句(后续请使用vim编辑器,否则容易出现【未预期的文件结尾】的问题)
Shell脚本官方说明
Shell 通过提示您输入,向操作系统解释该输入,然后处理来自操作系统的任何结果输出,简单来说Shell就是一个用户跟操作系统之间的一个命令解释器。
shell 编程注意事项
Shell脚本名称命名一般为英文、大写、小写,后缀以.sh 结尾
shell 脚本 变量不能以数字、特殊符号开头,不能使用特殊符号,可以用【_】下划线,不能使用关键字。
你的第一个脚本程序:
如果对输入过程不太了解,就直接复制粘贴。
效果如下图:
是否内嵌命令
通过type可以查看咱们平时使用的命令是否是【shell】内嵌命令,如果是代表执行效率就高。
识别内嵌shell命令
Shell 脚本的第一行要写 #!/bin/sh,它指明了脚本中命令的解释器,否则在直接运行脚本时,将不能识别内嵌命令。
运行【.sh】的三种方法
1、【./】
在执行脚本时一定要写成 ./test.sh,而不是 test.sh,运行其他二进制的程序也一样,直接写 test.sh,Linux 系统会去PATH 里寻找有没有叫 test.sh 的,PATH 里只有 /bin、/sbin、/usr/bin 和 /usr/sbin 等,当前目录通常不在 PATH 里,所以写成 test.sh 会找不到命令,要用 ./test.sh 告诉系统就在当前目录中找。
2、【作为解释器参数来运行shell脚本】
3、【使用 source 命令执行】
创建变量
遍历多个值
与加强for'循环差不多。【do】开始【done】结束。
花括号代表变量作用域,如果是连续字符建议使用,不是连续字符用不用都行
数组
数组操作就一定要加上作用域【{}】,使用方法与传统语法类似,下标都是从【0】开始
输出数组信息
获取数组长度
如果加上描述,建议用上双引号,与显示信息不同,这里有一个【#】符号
范围查询
传递参数
编辑测试脚本
输入以下编码:
读取变量是从【0】开始,但是由于第一个命令要执行【./脚本】,故而从【1】进行获取
运算符
运算符 |
说明 |
举例 |
! |
非运算,表达式为 true,则返回 false,否则返回 true |
[ ! false ] 返回 true |
-o |
或运算,有一个表达式为 true,则返回 true |
[ $a -lt 20 -o $b -gt 100 ] 返回 true |
-a |
与运算,两个表达式都为 true,才返回 true |
[ $a -lt 20 -a $b -gt 100 ] 返回 false |
运算符 |
说明 |
举例 |
&& |
逻辑的 AND |
[[ $a -lt 100 && $b -gt 100 ]] 返回 false |
|| |
逻辑的 OR |
[[ $a -lt 100 || $b -gt 100 ]] 返回 true |
运算符 |
说明 |
举例 |
-eq |
检测两个数是否相等,相等返回 true |
[ $a -eq $b ] 返回 false |
-ne |
检测两个数是否不相等,不相等返回 true |
[ $a -ne $b ] 返回 true |
-gt |
检测左边的数是否大于右边的,如果是,则返回 true |
[ $a -gt $b ] 返回 false |
-lt |
检测左边的数是否小于右边的,如果是,则返回 true |
[ $a -lt $b ] 返回 true |
-ge |
检测左边的数是否大于等于右边的,如果是,则返回true |
[ $a -ge $b ] 返回 false |
-le |
检测左边的数是否小于等于右边的,如果是,则返回true |
[ $a -le $b ] 返回 true |
运算符 |
说明 |
举例 |
= |
检测两个字符串是否相等,相等返回 true |
[ $a = $b ] 返回 false |
!= |
检测两个字符串是否相等,不相等返回 true |
[ $a != $b ] 返回 true |
-z |
检测字符串长度是否为 0,为 0 返回 true |
[ -z $a ] 返回 false |
-n |
检测字符串长度是否为 0,不为 0 返回 true |
[ -n "$a" ] 返回 true |
str |
检测字符串是否为空,不为空返回 true |
[ $a ] 返回 true |
流程控制语句(后续请使用vim编辑器,否则容易出现【未预期的文件结尾】的问题)
分支语句
关键字:if、elif、else、fi。
再次编辑【test.sh】文件
循环语句
for循环
while循环
这里let表示后面"i++"的自增,不用【$】
until 循环
until 循环执行一系列命令条件为false继续,直至条件为 true 时停止。
case语句
循环控制语句
continue代表停止当前循环,进入下次循环。
break代表终止循环。
函数
函数语法如下:
- 点赞
- 收藏
- 关注作者
评论(0)