while循环
while 条件测试 #根据条件的结果决定是否要执行任务,条件测试成
功的话就执行,如果失败立刻结束循环
do
任务
done
: #代表永远正确
sleep 0.1 #休息0.1秒
while [ $n -ge 5 ] #可以根据条件决定是否要循环
let n-- #每次循环将n-1
case分支
(1)
case 调用的变量名 in
模式1)
指令;;
模式2)
指令;;
*)
指令
esac
(2)
#!/bin/bash
case $1 in
t) //如果$1是t就执行touch任务
touch $2;;
m) //如果$1是m就执行mkdir任务
mkdir $2;;
r) //如果$1是r就执行rm任务
rm -rf $2;;
*)
echo “请输入t或者m或者r”
esac
nginx
1.nginx 是搭建网站的服务
编写源码安装nginx脚本:
tar -xf lnmp_soft.tar.gz #在家目录释放软件包,这个软件包是从真机获取的
cp lnmp_soft/nginx-1.17.6.tar.gz /opt #拷贝nginx到opt下
1.释放nginx的tar包
2.进入释放产生的目录
3.源码编译 gcc make
cd /opt #回opt写下列脚本
#!/bin/域名bash
yum -y install gcc make pcre-devel openssl-devel #安装依赖软件
tar -xf nginx-1.17.6.tar.gz #释放nginx的tar包
cd nginx-1.17.6 #进入目录
./configure #配置
make #编译
make install #安装
脚本写完后,检查yum必须可用!
运行完脚本后,查看 ls /usr/local/nginx 目录可以看到
systemctl stop httpd #关闭httpd避免端口冲突
/usr/local/nginx/sbin/nginx #开启nginx服务
systemctl stop firewalld #关闭防火墙
使用浏览器访问虚拟机的网站页面http://192.168.2.5/ 这个地址要按照自己虚拟机的写
/usr/local/nginx/sbin/nginx -s stop #关闭nginx
2.使用case分支编写控制nginx服务的脚本:
#!/bin/bash
case $1 in
start|kai) //输入start或者kai 就开启nginx
/usr/local/nginx/sbin/nginx;;
stop|STOP|s|guan) //输入stop或STOP或s或guan就关闭nginx
/usr/local/nginx/sbin/nginx -s stop;;
netstat 命令可以查询系统启动的端口信息
-n以数字格式显示端口号
-t显示TCP连接的端口
-u显示UDP连接的端口
-l显示服务正在监听的端口信息,如httpd启动后,会一直监听80端口
-p显示监听端口的服务名称是什么(也就是程序名称
netstat -ntulp | grep -q nginx
#查询nginx,但不输出结果 -q选项是保持沉默
[ $? -eq 0 ] && echo “nginx正在运行” || echo “nginx未开启”;;
#判断,如果上述任务成功,说明nginx服务开启,就显示"nginx正在运行",如果上述任务失败,说名nginx服务关闭,就显示"nginx未开启"
更改字体颜色
echo -e “\033[31mABCD\033[0m” //使用echo输出不同颜色的内容(红色)
echo -e “\033[32mABCD\033[0m” //使用echo输出不同颜色的内容(绿色)
echo -e “\033[33mABCD\033[0m” //使用echo输出不同颜色的内容(黄色)
echo -e “\033[34mABCD\033[0m” //使用echo输出不同颜色的内容(篮色)
函数
函数名(){
指令
}
a(){ //创建函数
echo abc
echo xyz
}
a //调用函数
a //可以反复调用函数
2.使用函数修改字符颜色
echo -e “\033[$1m$2\033[0m” #输出带颜色的字符
a 31 ABCD #调用函数时,后面跟第一个位置变量定义颜色
3.利用函数完善之前的脚本,使输出信息时有不同颜色
[ $? -eq 0 ] && a 32 “nginx正在运行” || a 31 “nginx未开启”;;
*)
循环的控制
exit 可以终止循环,但脚本也终止
break 可以终止循环,继续循环后的任务
continue 可以终止当前循环,继续下一次循环
1.编写脚本,帮用户进行整数求和,如果用户输入0就结束求和,并输出结果
while : //while循环后面写冒号代表永远正确可以无限循环
do
read -p “请输入一个整数求和(0是结束并输出结果):” n
[ -z $n ] && continue //如果n是空值则重新进行循环任务
[ $n -eq 0 ] && break //如果n是0则退出循环执行循环后任务
let x+=n //不断的将n的值保存在x里
字符串的处理
1.字符串的截取
${变量名称:截取位置:截取长度}
[root@proxy opt]# a=abcd
[root@proxy opt]# echo ${a:1:2} #从第二位截取两位
bc
[root@proxy opt]# echo ${a:0:2} #从头截取两位
ab
1)编写脚本,可以生成8位随机字符用作密码
n=
[
R
A
N
D
O
M
a
=
[RANDOM%62] //得到0~61随机数存在变量n中 a=
[RANDOMa={x:n:1} //截取到1个随机字符,存在变量a中
c=
a
a
ac //不断往c中追加,此时c相当于一个袋子
done
echo $c //最后喊出,得到8位长度随机字符串
2.字符串替换
${变量名/旧/新}
a=1234
echo ${a/2/6} #将1个字符2换成6
a=112233
echo ${a/2/6} #将1个字符2换成6
echo ${a//2/6} #将所有字符2换成6
a=1122233
echo ${a/22/66} #换2个
echo ${a/11/} #将11替换成空,相当于删除
3.字符串的删除,可以删除两边
${变量名#要删除的内容} 掐头
${变量名%要删除的内容} 去尾
1)
a=abcdef #创建变量,作为素材
echo ${a#abc} #掐头,删除到abc
echo ${a%def} #去尾,删除到def
echo ${a#abcde} #掐头,删除到abcde
a=abcdefghijk #创建变量,作为素材
echo ${a#abcdefghi} #掐头,删除到i
echo ${a#i} #效果同上,精简写法
echo ${a%defghijk} #去尾,删除到d
echo ${a%d} /#效果同上,精简写法
先用touch abc{01…10}.txt 创建10个文件作为素材
for i in KaTeX parse error: Expected 'EOF', got '#' at position 12: (ls *.txt) #̲找到所有的txt文件交给for…{i%.*} #用去尾的方法删除扩展名
mv $i $n.doc #再将源文件扩展名修改为doc
2)
字符串删除
a=abcdabcd #定义变量为素材
echo ${a#*c} #从左往右删除到第1个c
echo ${a##*c} #从左往右删除到最后1个c
echo ${a%b*} #从右往左删除到第1个b
echo ${a%%b*} #从右往左删除到最后1个b
4.定义变量初值(备用)
${变量名:-初值}
read -p “请输入用户名:” u
[ -z $u ] && echo “必须输入用户名!” && exit
useradd $u
read -p “请输入密码(默认123456):” n
echo ${n:-123456} | passwd --stdin $u