开始
第一行1
它代表的意思是,该文件使用的是bash语法。
默认我们用vim编辑的文档是不带有执行权限的,所以需要加一个执行权限chmod
1
chmod +x test.sh
使用sh
命令去执行一个shell脚本的时候是可以加-x
选项来查看这个脚本执行过程:sh -x test.sh
shell 脚本中的变量
1 | d=`date "+%Y-%m-%d %H:%M:%S"` |
上述脚本中d
和d1
作为变量出现,格式为:变量名=变量的值
。
使用变量时需要加上 “$” 符号。
执行结果:
1 | this script begin at 2019-01-02 11:29:10 |
数学运算
1 | a=1 |
数学计算要用[ ]
括起来并且外头要带一个”$”。脚本结果为:
1 | 1+2 is 3 |
与用户进行交互:
1 | echo "请输入一个数字:" |
结果为:1
2
3
4
5请输入一个数字:
1
请再输入一个数字:
2
1+2 的和为:3
更加简洁的方式,read -p
选项类似echo
的作用。:
1 | read -p "请输入一个数字:" x |
执行如下:
1 | 请输入一个数字:2 |
预设变量
1 | sum=$[$1+$2] |
执行时追加变量1和2:
1 | $ sh pre_var.sh 1 2 |
输出结果:1
3
shell脚本中的逻辑判断
基础用法
1. 不带 else
1 | if 判断语句; then |
1 | read -p "Please input your score:" a |
输出:
1 | Please input your score:56 |
2. 带有 else1
2
3
4
5
6
7
8
9if 判断语句 ; then
command
else
command
fi
1 | read -p "Please input your score:" a |
3. 带有 elif
1 | if 判断语句一 ; then |
if 判断档案属性
1 | -e :判断文件或目录是否存在 |
使用if判断时,具体格式为: if [ -e filename ] ; then
case
除了用if来判断逻辑外,还有一种常用的方式,那就是case
1 | case 变量 in |
上面的结构中,不限制value的个数,*则代表除了上面的value外的其他值。
shell脚本中的循环
for 基本语法
1
2
3
4
5 for 变量名 in 循环的条件; do
command
done
示例:(seq 1 5
表示从1到5的一个序列)1
2
3for i in `seq 1 5`;do
echo $i
done
输出:1
2
3
4
51
2
3
4
5
while 基本语法
1 | while 条件; do |
shell脚本中的函数
基本语法
1
2
3
4
5 function 函数名() {
command
}