1,shell简介
shell脚本就是一个文件
在文件中包含了要批量自动执行的命令
写shell脚本的基本规范
第一步:用vi/vim创建一个后缀是.sh的文件
第二步:在文件中写入内容
第一行是:#!/bin/bash 指定程序的解释器
从第二行开始是文件的正文
第三步:保存退出
第四步:给shell脚本赋权【赋予执行权限 x】
第五步:执行shell脚本
vi/vim
vim是vi的升级版
建议用vim
可能需要安装vim
安装vim的方法:
1)配置好yum源
2)开始安装:yum install vim -y
shell脚本的注释
shell脚本中,是用#进行注释
关于脚本赋权
写法1:
chmod +x 脚本
写法2:
chmod 777 脚本
执行shell脚本
./脚本
案例
#!/bin/bash
echo "hello boys"
echo "程序开始执行......"
echo "当前用户是 `whoami`"
echo "当前主机的地址是:`ip addr s ens33 | awk -F "[/ ]+" 'NR==3{print $3}'`"
echo "程序执行结束....."
2,变量
什么是变量
值会发生变量的对象
name="tom"
name是变量名
tom是变量的值
定义变量
1)定义的格式
变量名=变量值 【=两边不能留空格】
变量名不能用引号
变量值可以用引号
变量值是数字类型,则不用引号
变量值是字符串类型,则必须用引号
2)变量名的要求
只能有数字、字母、下划线( _ )
不能以数字为开头
变量名要做到见名知道意
建议定义格式
单驼峰格式:stuName
双驼峰格式:StuName
下划线拼接:stu_name
使用变量
$变量名
注意:关于单双引号的问题
''无法将变量名替换成变量的值
案例:
定义变量animal=dog,输出结果是 there are many dogs
#!/bin/bash
animal="dog"
echo "there are many ${animal}s"
3,用户交互
格式
read -p "给用户的提示:" 变量名
提示信息是给用户看的
用户输入的内容会保存到后面这个变量中
案例
#!/bin/bash
read -p "请输入你的姓名:" stuName
read -p "请输入你的年龄:" stuAge
read -p "请输入你的性别:" stuSex
echo "欢迎:$stuName, 你的年龄是$stuAge,性别是$stuSex"
4,四则运算
shell中,默认会将变量作为字符串,包括数字
格式:
$[数学表达式]
案例
[root@localhost ~]# num1=3
[root@localhost ~]# num2=5
[root@localhost ~]#
[root@localhost ~]# echo "$[$num1*$num2]"
15
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# echo "$[$num1/$num2]"
0
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# echo "$[$num2/$num1]"
1
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# echo "$[$num2%$num1]"
2
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# echo "$[$num1%$num2]"
3
让用户输入三个数字,输出三个数字的和
#!/bin/bash
read -p "请输入第一个数字:" num1
read -p "请输入第二个数字:" num2
read -p "请输入第三个数字:" num3
sum=$[$num1+$num2+$num3]
echo "三个数字的和:$sum"
5,补充内容
命令执行状态值
输出结果重定向
命令执行状态值
执行状态是用来表示命令执行成功还是执行失败
命令的执行状态值,默认是不显示的
linux命令执行成功,用0表示
linux命令执行失败,用非0表示
用linux的内置变量$?可以查看
最近的一个命令
的执行状态值
命令的执行输出有两种结果
输出结果:直接显示在终端上,给用户看的
状态结果:是给系统看的
输出重定向
输出重定向就是将原本要输出在终端中的内容,保存到一个文件中
重定向分为三种:
正确输出重定向(1,默认就是1,所以可以省略)
错误输出重定向(2,)
全部输出重定向(&)
两种方法
> 将命令的输出结果保存到一个文件中
如果文件不存在,就会创建一个新文件,让后将命令输出结果保存进去
如果文件存在,那么会将文件中原有内容清空,然后将命令输出结果保存进去
>> 将命令的输出结果保存到一个文件中
如果文件不存在,就会创建一个新文件,让后将命令输出结果保存进去
如果文件存在,那么在文件中原有内容后进行追加
让用户输入一个用户名,判断这个用户是否存在
#!/bin/bash
read -p "请输出一个用户:" userName
id $userName &>/dev/null
echo "判断用户执行结果:$?"