脚本:可以执行的一个文件,实现某种功能。
脚本组成:
vim /root/hello.sh
编写脚本:
#!/bin/bash
echo Hello World
赋予执行权限
chmod +x /root/hello.sh
运行脚本
/root/helloworld.sh
Hello World
例二、编写sysinfo系统信息报告脚本
编写脚本:
vim /root/sysinfo.sh
#!/bin/bash
cat /etc/redhat-release
uname -r
hostname
赋予执行权限
chmod +x /root/sysinfo
脚本技巧:
1管道 |
2重定向输出: >只收集前边命令的正确输出、
2>只收集前边命令的错误输出、
&>收集前边命令的正确和错误输出
单引号 ‘’ 取消特殊字符意义
反撇号 `与 $() 将命令的输出,作为参数直接参与下一个命令的运行
创建一个以年-月-日结尾的目录:
mkdir nsd -`date +%F`
mkdir nsd -$(date +%F)
创建脚本:
vim /root/user.sh
#! /bin/bash
read -p ‘请输入您要创建的用户名:’ a
read -p ‘请输入您要创建的用户密码:‘ b
a=nsd07
useradd $a &> /dev/null
echo 用户$a创建成功
echo $b | passwd --stdin $a &> /dev/null
echo 用户$a密码设置成功
chmod +x /root/user.sh
/root/user.sh
read -p: 产生交互;
记录用户的键盘输入;
将记录的信息赋值给一个变量存储
变量名 只能有字母数字下划线组成,区分大小写。不能以数字开头,等号两边不允许有空格。
查看变量值:
echo $a
echo ${a}
变量种类:1 环境变量 -系统定义并赋值(一般变量名大写)
USER=当前登陆的用户名
echo $USER
2位置变量 -由系统定义并赋值,
$1 $2 $3 $4
vim /root/1.sh
#! /bin/bash
cat -n $1 | head -$2
chmod +x /root/1.sh
/root/1.sh /etc/passwd 4
3预定义变量
KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲ 已加载的位置变量的个数, …# 为0时,说明用户没有输入参数
$? 程序退出后的状态值,0表正常。其他异常
[ 测试表达式 ] 左右必须有空格
检查文档状态:
-e 文档存在才为真
-d文档存在,且为目录才为真
-f文档存在,且为文件才为真
比较整数大小:
-gt -ge -eq -ne -lt -le
字符串比较:
==一致才为真
!=不一致为真
if 双分支:
if [条件测试] ; then
命令序列xx
else
命令序列yy
fi
vim /root/if01.sh
#! /bin/bash
read -p ‘请输入您要创建的用户:’ a
id $a &> /dev/null
if [ $? -eq 0 ];then
echo $a 存在
else
echo $a 不存在
fi
chmod +x /root/if01.sh
/root/if01.sh tt
if多分支
if [ 条件测试1 ];then
命令序列xx
elif [ 条件测试2 ];then
命令序列yy
else
命令序列zz
fi
vim /root/if02.sh
#! /bin/bash
read -p ‘请输入您的成绩:’ num
if [ $num -ge 90 ];then
echo 优秀
elif[ $num -ge 80 ];then
echo 良好
elif [ $num -ge 70 ];then
echo 一般
elif [ $num -ge 60 ];then
echo 合格
else
echo '一首凉凉送给你'
fi
chmod +x /root/if02.sh
/root/if02.sh 85
列表循环(反复执行的操作)
for循环:
for 变量名 in 值列表
do
命令序列
done
#!/bin/bash
for a in zhangsan lisi dc dtt
do
useradd $a &> /dev/null
echo $a创建成功
done
造数工具:{1…10}