Shell 脚本的介绍
Shell脚本通过Shell终端解释器当作人与计算机硬件之间的翻译官,用户可以通过它执行各种命令,不仅有简单的,还有复杂的,比如:判断、循环、分支等这些高级编程中才有的特性。Shell 命令有两种工作方式:
交互式:用户每输入一条命令就立即执行。
批处理:由用户事先编写好一个完整的脚本,然后再一次性执行完Shell脚本中的命令。
交互式,比如:
# 输入系统的PATH变量到屏幕上
echo $PATH
批处理,就是把之前学习的Linux命令以及正则表达式,管道符,数据流重定向等语法规则结合到一起,再通过内部的逻辑语句进行处理,最终形成一个 Shell 脚本。
我们可以编写一个简单的脚本:
test.sh
#!/bin/bash
# 这个一行注释
pwd
ls -l
Shell 脚本的后缀名可以为任何类型,但是为避免用户误以为是普通文件,所以普遍将用 .sh 作用后缀名
上面这个脚本:
第一个行是声明脚本以 bin/bash 解析器解析。
第二行是注释,对脚本的功能介绍。
第三行,第四行, 是两个简单的命令,就是我们平时执行的命令。
使用脚本接收用户的参数
如果我们的脚本像上面简单的编写的话,那也太过死板了,不够灵活,不能处理多种情况,如果一个程序不能和用户交互的话,就是一个好的程序,所以必须要让程序接收用户的参数。
接收参数命令及作用
参数 | 作用 |
$0 | 脚本的名称 |
$# | 参数的个数 |
$* | 对应所有的参数 |
$? | 上一次命令的返回 |
$n | 分别对应第n个位置的参数 |
exec.sh
#!/bin/bash
echo "脚本的名称为:$0"
echo "脚本一共有:$# 个参数,分别是:$*"
echo "第二个参数是:$2,第五个参数是:$5"
各个参数之间用空隔间隔
判断文件的参数
文件判断的参数
命令 | 作用 |
-d | 判断文件是否为目录 |
-e | 判断文件是否为空 |
-f | 判断文件是否为一般文件 |
-r | 判断文件是否可读 |
-w | 判断文件是否可写 |
-x | 判断文件是否可以执行 |
中括号的前后最后留一个空格的距离
Shell 脚本中的判断不仅仅可以判断文件,还可以比较数值:
可用于整数比较的运算符
命令 | 作用 |
-eq | 是否等于 |
-ne | 是否不等于 |
-gt | 是否大于 |
-lt | 是否小于 |
-le | 是否小于等于 |
-ge | 是否大于等于 |
还可以用来比较字符串是否相等:
命令 | 作用 |
= | 比较字符串内容是否相等 |
!= | 比较字符串内容是否不相等 |
-z | 判断字符串内容是否为空 |