Shell脚本基础
文章目录
一、概念
1)将要执行的命令按顺序保存到一个文本文件
2)给脚本文件赋予执行权限
3)可以结合各种shell控制语句用来完成更加复杂的操作
二、应用场景
1)重复性操作
2)交互性任务
3)批量事务处理
4)服务运行状态监控
5)定时任务执行
三、shell作用——翻译官
- shell介于系统内核与用户之间,负责解释命令行
四、查看shell所在位置
[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
五、写脚本
[root@localhost ~]# vim hw.sh
#!/bin/bash ///第一行固定要输入///
cd /boot/
pwd
ls -lh vml*
然后我们对写好的脚本文件赋予执行权限
[root@localhost ~]# chmod +x hw.sh
然后我们运行一下脚本
./hw.sh
[root@localhost ~]# ./hw.sh
/boot
-rwxr-xr-x. 1 root root 6.4M 7月 6 08:44 vmlinuz-0-rescue-4b31639c68434d27b20b7624497ff77c
-rwxr-xr-x. 1 root root 6.4M 11月 9 2018 vmlinuz-3.10.0-957.el7.x86_64
sh hw.sh
[root@localhost ~]# sh hw.sh
/boot
-rwxr-xr-x. 1 root root 6.4M 7月 6 08:44 vmlinuz-0-rescue-4b31639c68434d27b20b7624497ff77c
-rwxr-xr-x. 1 root root 6.4M 11月 9 2018 vmlinuz-3.10.0-957.el7.x86_64
. hw.sh
[root@localhost ~]# . hw.sh
/boot
-rwxr-xr-x. 1 root root 6.4M 7月 6 08:44 vmlinuz-0-rescue-4b31639c68434d27b20b7624497ff77c
-rwxr-xr-x. 1 root root 6.4M 11月 9 2018 vmlinuz-3.10.0-957.el7.x86_64
[root@localhost boot]# ///这边注意,使用【.】运行,会切换bash环境
source hw.sh
[root@localhost ~]# source hw.sh
/boot
-rwxr-xr-x. 1 root root 6.4M 7月 6 08:44 vmlinuz-0-rescue-4b31639c68434d27b20b7624497ff77c
-rwxr-xr-x. 1 root root 6.4M 11月 9 2018 vmlinuz-3.10.0-957.el7.x86_64
[root@localhost boot]# ///这边注意,使用【.】运行,会切换bash环境
我们现在给脚本添加一些文字
[root@localhost ~]# vim hw.sh
#!/bin/bash
# 添加文字显示
cd /boot
echo "当前的目录位于"
pwd
echo "其中以vml开头的文件包括:"
ls -lh vml*
执行一下
[root@localhost ~]# ./hw.sh
当前的目录位于
/boot
其中以vml开头的文件包括:
-rwxr-xr-x. 1 root root 6.4M 7月 6 08:44 vmlinuz-0-rescue-4b31639c68434d27b20b7624497ff77c
-rwxr-xr-x. 1 root root 6.4M 11月 9 2018 vmlinuz-3.10.0-957.el7.x86_64
六、管道符号【|】的使用
[root@localhost /]# grep "bash$" /etc/passwd | awk -F: '{print $1,$7}'
root /bin/bash
七、变量的作用
1)用来存放系统和用户需要使用的特定参数(值)
2)变量名:使用固定的名称,由系统预设或用户定义
3)变量值:能够根据用户设置、系统环境的变化而变化
八、变量的类型
1)自定义变量:由用户自己定义,修改和使用
2)特殊变量:环境变量,只读变量,位置变量,预定义变量
九、定义一个新变量
变量名=变量值
a = 1 ///【=】是赋予的意思 【==】是等于的意思///
十、赋值时使用引号
1)双引号:允许通过$符号引用其他变量值
2)单引号:禁止引用其他变量值,$视为普通字符
3)反撇号:命令替换,提取命令执行后的输出结果
十一、从键盘输入的内容为变量赋值
read【-p "提示信息"】 变量名
编写脚本
[root@localhost /]# a=1
[root@localhost /]# echo $a
1
[root@localhost /]# c="test $a" ///双引号///
[root@localhost /]# echo $c
test 1
[root@localhost /]# c='text $b' ///单引号///
[root@localhost /]# echo $c
text $b
[root@localhost /]# d=`ps aux | wc -l` ///反撇号///
[root@localhost /]# echo $d
139
[root@localhost /]# d=$(ps aux | wc -l) ///和反撇号一样的作用///
[root@localhost /]# echo $d
140
[root@localhost /]# read -p "请输入一个整数:" nub
请输入一个整数:111
[root@localhost /]# echo $nub
111
十二、设置全局变量
格式1:export 变量名
格式2:export 变量名=变量值
[root@localhost /]# export aaa=23
[root@localhost /]# echo $aaa
23
[root@localhost /]# bash ///切换环境///
[root@localhost /]# echo $aaa
23
十三、运算
常用运算符号
- 加:+
- 减:-
- 乘:*
- 除:/
- 取余:%
[root@localhost /]# expr 2 + 3
5
[root@localhost /]# a=1
[root@localhost /]# b=2
[root@localhost /]# expr $a + $b
3
[root@localhost /]# c=3
[root@localhost /]# expr $b \* $c
6
[root@localhost /]# expr $b / $c
0
[root@localhost /]# expr $b - $c
-1
十四、环境变量
- 环境变量是由系统提前创建,用来设置用户的工作环境
- 常见的环境变量有:PWD、PATH、USER、SHELL、HOME
[root@localhost /]# echo $PWD
/
[root@localhost /]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost /]#
十五、只读变量
只读变量用于变量值不允许被修改的情况
[root@localhost /]# name=hewei
[root@localhost /]# readonly name
[root@localhost /]# echo $name
hewei
[root@localhost /]# name=he
bash: name: 只读变量
[root@localhost /]# unset name
bash: unset: name: 无法反设定: 只读 variable
十六、位置变量
位置变量表示为$n,n为1~9之间的数字
[root@localhost /]# vim hw.sh
#!/bin/bash
#read -p "请输入第一个整数:" a
#read -p "请输入第二个整数:" b
echo $1
echo $2
sum=$(expr $1 + $2)
echo "和为:$sum"
十七、预定义变量
$#:命令行中位置变量的个数
$*:所有位置变量的内容
$?:上一条命令执行后返回的状态,当返回状态值为0时,表示执行正常,非0值表示执行异常或出错
$0::当前执行的进程/程序名