简单介绍Shell脚本
Shell脚本就是一些命令的集合。举个例子,我想实现这样的操作:(1)进入到/tmp/目录;(2)列出当前目录中所有的文件名;(3)把所有当前的文件拷贝到/root/目录下;(4)删除当前目录下所有的文件。简单的4步在shell窗口中需要你敲4次命令,按4次回车。这样是不是很麻烦?当然这4步操作非常简单,如果是更加复杂的命令设置需要几十次操作呢?那样的话一次一次敲键盘会很麻烦。所以不妨把所有的操作都记录到一个文档中,然后去调用文档中的命令,这样一步操作就可以完成。其实这个文档呢就是shell脚本了,只是这个shell脚本有它特殊的格式。
Shell脚本的基本结构以及如何执行
先输出经典的Hello World.
Shell脚本通常都是以.sh为后缀名。test.sh中第一行一定是“#! /bin/bash”
它代表的意思是,该文件使用的是bash语法。如果不设置该行,那么你的shell脚本就不能被执行。默认我们用vim编辑的文档是不带有执行权限的,所以需要加一个执行权限 chmod +x test.sh
。
在Shell脚本中date
这个命令的作用是用来打印当前系统时间。
%Y
表示年,%m
表示月,%d
表示日期,%H
表示小时,%M
表示分钟,%S
表示秒
Shell脚本中变量
如果你写了一个长达1000行的shell脚本,并且脚本中出现了某一个命令或者路径几百次。突然你觉得路径不对想换一下,那岂不是要更改几百次?你固然可以使用批量替换的命令,但是也是很麻烦,并且脚本显得臃肿了很多。变量的作用就是用来解决这个问题的。
在test2.sh
中使用了反引号,其作用是在执行一条命令时,会先将其中的 “ ,或者是$() 中的语句当作命令执行一遍,再将结果加入到原命令中重新执行。当在脚本中引用变量时需要加上’$’符号,输出结果为
下面用Shell计算两个数的和
数学计算要用’[ ]’括起来并且外头要带一个’$’。脚本结果为:
Shell脚本读取用户键入数据
这就用到了read命令了,它可以从标准输入获得变量的值,后跟变量名。”read x”表示x变量的值需要用户通过键盘输入得到。脚本执行结果如下
Shell脚本中的逻辑判断
if 判断语句;then
command
else
command
fi
输出结果:
在判断数值大小除了可以用”(( ))”的形式外,还可以使用”[ ]”。但是就不能使用>, < , = 这样的符号了,要使用 -lt (小于),-gt (大于),-le (小于等于),-ge (大于等于),-eq (等于),-ne (不等于)。
Shell脚本中的循环
常用到的循环有for循环和while循环,下面简单介绍一下for循环的结构
脚本中的seq 1 5表示从1到5的一个序列,脚本执行结果为:
然后可以看到for循环的基本结构:
for 变量名 in 循环条件; do
command
done
循环条件的那一部分还可以写成这样的形式,中间用空格隔开即可。for i in 'cat test.txt'; do echo $i; done
Shell脚本中的函数
fun.sh中的sum()为自定义的函数,在Shell脚本中要用
function 函数名() {
command
}
脚本执行结果
在Shell脚本中,函数一定要写在最前面,不能出现在中间或者最后,因为函数是被调用的,如果还没出现就被调用了,肯定会出错的。