初衷:利用编写脚本简化应用者使用的复杂程度,屏蔽内部实现逻辑,提高应用效率。
目标:学习Shell脚本编程基本语法,可编写简单可应用的脚本程序
一、vi/vim 编辑器使用简介
编辑脚本程序,首先至少需要一款编辑器,Linux编辑器有很多,比如vim(vi升级版)、nano、emacs以及桌面编辑器等等,我常用vi/vim来进行文本编辑,就常用指令来梳理一下,您可根据尝试选择适合自己的编辑器。以下是在vim编辑器中写的内容 # 是注释的意思:
二、开始动手创建脚本文件
1、首先使用touch命令来创建一个文件,为了阅读方便,我们起名为test1.sh 。
在脚本文件中第一行必须标注要使用的Shell ,比如常用的为 #!/bin/bash 就是使用bash shell来运行下面你的脚本内容,当然你也可以使用其他Shell来运行你的脚本内容
脚本内容:
输出结果:
说明:首先查看当前路径,因为该路径并没有配置到$PATH环境变量中,因此直接输入脚本名不能让Linux找到对应的命令,我们使用全路径调用脚本发现提示权限不足,然后通过查询发现该文件没有执行x权限,然后我们将所有者加上执行权限,再次调用输出了我们想输出的东西。将该路径加入至PATH中后,Linux在寻找中就能发现此输入对应的正确脚本文件位置。
2、在脚本中使用环境变量
在脚本中可以使用系统环境变量,也可以使用用户变量
输出结果:
3、命令替换
意思是说可以将命令的输出赋予一个变量,之后就可以在其他地方应用该输出了
输出结果:
3、使用方括号进行数学运算
这里直接使用 $[ ] 来进行计算
输出结果:
但是需要注意的一点是,bash shell中 $[ ] 中不支持浮点数运算,因此需要使用bc应用来解决
输出结果:
引入bc后:
其中scale代表后面几位小数,这里是将var1/var2结果通过管道符|传给bc程序进行计算
输出结果:
4、关于可以在脚本中指定退出码
当成功执行命令后,可以通过$?如果是0则表示成功
如果是其他则表示不成功,比如:
shell脚本中默认执行成功就返回默认退出码了,但是我们可以自定义一个,「这里需要注意的是退出码的范围是0~255,因此如果设置超过此数字后,则会自动取取模计算后的结果」比如:
输出结果:
三、开始进入简单逻辑书写
1、「if then elif then else fi 」 简单说就是if条件判断语句,这里给定了一个最全的,我们可以通过事例来说明
输出结果:
再写一个多层判断逻辑:
首先创建一个测试目录供使用
脚本内容:
输出结果:
2、test命令
test命令会验证条件是true或者false 然后if会根据结果进行判定
脚本内容:
输出结果:
3、不写test 使用[ ] 来验证条件 【请注意方括号的前后空格】
数值比较符号表:
字符串比较表:
例:
上面事例脚本内容中,有几个需要注意到的点:
1、在进行多个字符串非空判断中使用 && 符号,该符号的意思是并且 都为真的情况下才返回ture ,另一个是 || 的意思是只要有一个为真就返回true,使用方法相同 注意前后方括号。
2、注意字符串比较时候 > 是需要使用转义符的,否则会编程重定向输入操作,并且还不会报错
输出结果:
文件比较:
事例:
输出结果:
针对输出结果可以看到 文件test10判定真确 且拥有者执行者拥有可写权限
4、使用case
case命令的目标是减少大量if-then-elif-fi的多次判断产生大量冗余。我们看下面一个例子
事例:
类似于java中switch-case语句,需要注意是 1、case条件后面的in 2、每个条件后面是) 3、每个符合条件内容结尾需要有两个;;
输出结果: