1、创建脚本
Shell脚本是将一系列的Linux命令放在一个文件中执行的实用程序。Shell脚本可以利用vi等文本编辑器来编写。
Shell脚本的格式是固定的,如下:
#!/bin/bash
#注释
命令
...
第一行中的符号“#!”用来指定解释执行该脚本文件的Shell程序。如果脚本文件中缺少该行,在执行过程中就会报错。除了第一行只为,所有“#”开头的行都是注释。如果一行未完成,可以在行尾加上"\"字符,表示与下一行合并未一行。脚本编写完毕之后,需要将脚本的属性设置为可执行,如下:
chmod +x hello.sh
执行脚本的方法为:
./hello.sh
2、一个案例
编写一个简单的脚本,输出字符串 Hello Shell,内容如下:
#!/bin/bash
# 输出Hello Shell
str="Hello Shell"
echo $str
这里的echo命令表示字符串原样输出。
执行命令,更改文件的属性,并且执行,如下:
chmod +x hello.sh
./hello.sh
Hello Shell
3、特殊字符
3.1 通配符
通配符主要用于模式匹配,常见的通配符有以下几种:
星号(*):匹配0个或者多个字符
问号(?):匹配任意的单个字符
方括号([]):匹配方括号中限定的任意一个字符,可以直接给出,也可以设定范围
感叹号(!):表示方括号中列出的字符以外的其它字符。
3.2 引号
引号分为双引号、单引号和反引号。由双引号括起来的字符,除美元符号($),反引号(')和反斜线(\)仍然保留其特殊功能外,其余字符均作为普通字符对待。
反引号括起来的字符串被Shell解释为命令行。执行时首先执行该命令行,然后以命令的输出结果替换反引号部分。
单引号括起来的都是普通字符
3.3 重定向
执行Shell命令时,系统会自动打开3个标准文件,通常对应于终端键盘的标准输入文件stdin,对应于终端屏幕的标准输出文件stdout和标准错误文件stderr。
这3个文件都可以通过重定向符进行重定向。
> 表示重定向到某一个文件 >> 表示追加到某一个文件
< 表示把命令的标准输入重定向到指定文件。
4、Shell变量
Shell是一种解释型语言,直接对一个变量进行赋值,实际上就是定义了这个变量。
例如,对变量STR进行赋值操作,不过这里有一个注意的问题,等号的两边不能有空格:
STR="Hello World!"
变量赋值之后,久可以使用$对其进行引用,例如:
echo $STR
注意:
由于Shell变量是没有类型的,所以用户可以使用同一个变量,存放不同的数据类型。在Shell中,也可以清除已经定义的变量,命令为unset:
unset STR
表示清除STR变量。
5、条件测试
条件测试是使用test命令来完成的,它常常用来计算一个条件表达式的值,经常在条件语句和循环语句中被用来判断某些条件是否满足。命令的格式通常是:
test 条件 或 [ 条件 ]
记得使用方括号的时候,两边要加上空格
5.1 字符串测试
操作符比较简单:
= 两个字符串相等
!= 两个字符串不等
-z 字符串为空
-n 字符串不为空
5.2 数值测试
-eq 两个数相等
-ne 两个数不相等
-gt 第一个数大于第二个数
-lt 第一个数小于第二个数
-le 第一个数小于等于第二个数
-ge 第一个数大于等于第二个数
5.3 逻辑操作
-a 逻辑与
-o 逻辑或
! 逻辑非
5.4 使用方式
我们使用一个数字举例说明一下:
$ NUMBER = 101
$ [ $NUMBER -eq "23" ]
$ echo $?
6、流程语句
6.1 if语句
if 条件1
then
命令1
elif 条件2
then
命令2
else
命令3
fi
注意:if语句使用fi结束
6.2 case语句
if语句主要用于在两个选项之间进行选择,而case语句则根据字符串或变量的值从多个选项中进行选择,其格式为:
case 字符串 in
模式1)
命令1
;;
模式2)
命令2
;;
esac
6.3 for循环
for循环的一般格式为:
for 变量名 in [列表]
do
命令1
命令2
...
done
6.4 while循环
while 条件
do
命令1
命令2
...
done
6.5 until循环
until 条件
do
命令1
命令2
...
done
7、Shell函数
Shell 中定义函数,格式如下:
[function] 函数名()
{
命令
}
函数也可以接受参数,在函数内部使用$1,$2等表示第一个参数,第二个参数,等等。