case语句 、 函数及中断控制 、 字符串处理

while循环,可以根据条件决定循环次数,也可以实现无限循环

while 条件测试   //根据条件的结果决定是否要执行任务,条件测试成

功的话就执行,如果失败立刻结束循环

do

任务

done

 

#!/bin/bash
while  :    //冒号代表永远正确
do
echo abc
sleep 0.1   //休息0.1秒
done

 

#!/bin/bash
n=10
while  [ $n -ge 5 ]    //可以根据条件决定是否要循环
do
echo abc
sleep 0.1
let n--     //每次循环将n-1
done

case分支,功能类似if,编写时语句比if精简

case 调用的变量名 in

模式1)

指令;;

模式2)

指令;;

*)

指令

esac                              

#!/bin/bash
case $1 in
t)
    touch $2;;
m)
    mkdir $2;;
r)
    rm -rf $2;;
*)
    echo "请输入t或m或者r"
esac

 

nginx 是搭建网站的服务

编写源码安装nginx脚本:

tar -xf lnmp_soft.tar.gz    //在家目录释放软件包,这个软件包是从真机获取的

cp lnmp_soft/nginx-1.17.6.tar.gz  /opt   //拷贝nginx到opt下

 

 创建test03.sh写入下列脚本:

#!/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是否可用

yum clean all
yum repolist

出现这种情况则说明yum可用。如果repolist为0,则需要重新搭建yum.

编写脚本,搭建yum
#!/bin/bash
#搭建yum软件仓库
mkdir /abc
mount /dev/cdrom /abc
rm -rf /etc/yum.repos.d/*.repo
echo "[abc]
name=abcabc
baseurl=file:///abc
enabled=1
gpgcheck=0" > /etc/yum.repos.d/abc.repo

安装完成查看 

 

systemctl  stop  httpd   //关闭httpd避免端口冲突

/usr/local/nginx/sbin/nginx   //开启nginx服务

systemctl  stop  firewalld  //关闭防火墙

使用浏览器访问虚拟机的网站页面http://192.168.110/ 这个地址要按照自己虚拟机的写

/usr/local/nginx/sbin/nginx  -s  stop   //关闭nginx

 

 关闭之后刷新页面

 

nginx不支持systemctl 命令

想要重新开启nginx需要用:

/usr/local/nginx/sbin/nginx

脚本控制nginx开启或者关闭: 

#!/bin/bash
case $1 in
start|kai)
/usr/local/nginx/sbin/nginx;;
stop|guan)
/usr/local/nginx/sbin/nginx -s stop;;
restart|cq)
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx ;;
cx|stasus)
netstat -ntulp | grep -q nginx
[ $? -eq 0 ] && echo "nginx正在运行" || echo "Ngin未
开启";;
*)
echo "请输入start、stop"
esac
~

 

 

 

 

函数,可以利用一个名称存储公共的语句块,实现

精简脚本方便后期调用的目的

函数名(){

指令

}

a(){     //创建函数
echo abc
echo xyz
}

a   //调用函数
a   //可以反复调用函数

 使用函数修改字符颜色

#!/bin/bash
a(){   //创建函数,名字叫a
echo -e "\033[$1m$2\033[0m"    //输出带颜色的字符
}

a 31 ABCD    //调用函数时,后面跟第一个位置变量定义颜色
第二个位置变量定义内容
a 32 xyzZ
a 33 EGSD
a 34 ERTY

 利用函数完善之前的脚本,使输出信息时有不同颜色

#!/bin/bash
a(){
echo -e "\033[$1m$2\033[0m"
}
case $1 in
start|kai)
/usr/local/nginx/sbin/nginx;;
stop|STOP|s|guan)
/usr/local/nginx/sbin/nginx -s stop;;
re|cq)
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx;;
cx|status)
netstat -ntulp | grep -q nginx
[ $? -eq 0 ] && a 32 "nginx正在运行" || a 31 "nginx>未开启";;
*)
echo "请输入start或stop"
esac


a 32 xyzZ
a 33 EGSD
a 34 ERTY

 

循环的控制

exit  可以终止循环,但脚本也终止

break  可以终止循环,继续循环后的任务

continue  可以终止当前循环,继续下一次循环

编写脚本,帮用户进行整数求和,如果用户输入0

就结束求和,并输出结果

#!/bin/bash
x=0
while :
do
read -p "请输入一个整数求和(0是结束并输出结果):" n
[ -z $n ] && continue
[ $n -eq 0 ] && break
let x+=n
done
echo "总和是$x"

 

 

字符串的处理

字符串的截取

${变量名称:截取位置:截取长度}

 

[root@localhost opt]# a=abcde
[root@localhost opt]# echo ${a:1:2}
bc
[root@localhost opt]# echo ${a:0:3}
abc

编写脚本,可以生成8位随机字符用作密码

注意该脚本用到以下思路:

[root@localhost opt]# c=a$c      //首先准备一个变量c作为口袋可以装字符,这里装了一个字符a
[root@localhost opt]# echo $c     //看看口袋里
a
[root@localhost opt]# c=6$c     //再往口袋里装一个字符6
[root@localhost opt]# echo $c     //再看看,口袋里字符越来越多
6a
[root@localhost opt]# c=t$c        //再装个字符t
[root@localhost opt]# echo $c    //字符又增加了
t6a

之后开始写脚本:

#!/bin/bash
x=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
for i in {1..8}
do
n=$[RANDOM%62]  #得到0~61随机数存在变量n中
a=${x:n:1}   #截取到1个随机字符,存在变量a中
c=$a$c   #不断往c中追加,此时c相当于一个袋子
done
echo $c   #最后喊出,得到8位长度随机字符串

 

  1. 字符串替换

${变量名/旧/新}

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替换成空,相当于删除


 

  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个文件作为素材

#!/bin/bash
for i in $(ls *.txt) //找到所有的txt文件交给for循环
do
n=${i%.*}  //用去尾的方法删除扩展名
mv $i $n.doc  //再将源文件扩展名修改为doc
done

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值