概念
shell是一个命令解释器,负责将用户输入的命令解释成系统内核能够执行的信息,系统内核执行后,显示在终端上。shell有些类似于各个语言的编译器,但又不完全一致。
当linux命令或语句不在命令行下执行,而是通过一程序文件执行时,该程序就被称为shell脚本或shell程序。用户可以在shell脚本中敲入一系列的命令及命令语句组合。这些命令、变量和流程控制语句等有机的结合起来就形成了一个功能强大的shell脚本。
应用场景
当遇到重复性操作、交互性任务、批量事务处理、服务运行状态监控、定时任务执行时,使用shell脚本可以显著的增加工作效率
shell脚本的编辑方式
shell脚本首先写入执行命令的shell环境,在写入注释(可写可不写),之后写入需要执行的命令并把shell脚本文件的权限更改为可执行。shell脚本执行的命令的时候按照写入的顺序一行一行的执行。
shell脚本的格式:
第一行:#!shell环境的绝对路径,比如#!/bin/bash
第二行:#写一些注释,注释必须以#号开头
写完注释后:写入一些echo 123等命令
使用shell脚本执行命令
[root@localhost /]# vim test.sh 编辑文件
#!/bin/bash 指定执行文件的shell环境
echo long may the sunshine
touch 123
[root@localhost /]# chmod +x test.sh 给文件赋予可执行权限
[root@localhost /]# ./test.sh 执行文件
long may the sunshine 显示结果
[root@localhost /]# ls
123 boot etc lib media opt root sbin su.sh tmp var
bin dev home lib64 mnt proc run srv sys usr
[root@localhost /]#
shell变量
可以通过给变量赋值来达到不用修改shell脚本只需要修改变量的值来执行不同的操作,格式为aa=bb,aa为变量名,bb为赋予的值,变量名由数字字母下划线组成,不能有特殊符号,不能以数字开头,区分大小写。变量通过$进行调用。
[root@localhost ~]# bb="hello world"
[root@localhost ~]# echo $bb
hello world
可以通过readonly对某个变量进行锁定
[root@localhost ~]# w=123
[root@localhost ~]# readonly w
[root@localhost ~]# echo $w
123
[root@localhost ~]# w=789
-bash: w: 只读变量
通过read为变量赋值
[root@localhost ~]# read -p "请输入你的名字:" name#-p添加注释
请输入你的名字:shiki
[root@localhost ~]# echo $name
shiki
使用expr对变量进行加减乘除
[root@localhost ~]# a=10
[root@localhost ~]# b=5
[root@localhost ~]# c=4
[root@localhost ~]# expr $a + $b
15
[root@localhost ~]# expr $a - $c
6
[root@localhost ~]# expr $a \* $c *由于有特殊含义需要加入\转义
40
[root@localhost ~]# expr $a / $c 对于expr命令有小数形式的数字只取前面取整
2
[root@localhost ~]# expr $a % $c %表示取余数
2
[root@localhost ~]# expr $a % $b
0