基础概念
脚本的作用是将一组操作封装进入文件,方便重复执行,也能够很方便的进行调试。
脚本文件的文件名一般以 .sh 后缀结尾。
Shebang 行
在脚本文件的第一行通常会指示某个解释器来解析这个脚本,在 shell 脚本中通常是 #!/bin/bash, 表示在 用 /bin/ 目录下的 bash 进行执行,但是呢,为了保险起见,我们一般会这样去写 #!/usr/bin/env bash。
可执行权限与执行
在 Linux 上创建的文件,默认是没有执行权限的,所以我们一般会给文件赋予相应的权限。
# 给用户 用户组 其他用户都赋予 可执行权限
$ chmod a+x test.sh
要执行程序的话,有三种方式方式
# 以切换到当前文件所在的目录
# 当然也可以直接使用 绝对路径
$ bash test.sh
# 不能省略 ./
$ ./test.sh
$ source test.sh
命令(或脚本)的返回值
在 linux 中,每执行完一条命令,或者执行完一个脚本,会有一个数字写入到 预定义变量 $1 之中,默认 0 表示成功、 其他值表示失败(一般是 1,但也可以自定义)。
通过这个变量,我们能够判断上一个命令是否执行成功,根据成功与否选择接下来的操作。
基本语法
注释很重要,在 Linux 的注释是使用 # 字符标识,进行单行注释,当然 Linux shell 也提供多行注释的方法
# 这是注释
# 这也是注释
ls -l # 注释还能够写在这里
<<EOF
可以多行注释
啊
EOF
脚本参数
之前写命令的时候,有参数的概念,命令后面根据参数的不同,进行不同的操作。同样一个脚本文件也能够在后面跟上不同的参数,然后脚本文件里面根据特定的语法来获取参数。
# 这个是文件
#!/bin/bash
echo "全部参数: " $@
echo "参数的数量" $#
echo "第一个参数" $1
# ... 依次类推到 9
# 十个以上的参数,需要 额外的写法
echo "第十个参数" ${10}
for arg in $@
do
echo $arg
done
$ bash test.sh 1 2 3 4 5 6 7 8 9 10 11 12 13 14
# 输出
11
1
2
3
4
5
6
7
8
9
10
11
12
13
14