Linux系统shell脚本(三)

条件判断case语句

格式

#!/bin/bash
#case $1 in
#[0-9])
#    command1
#;;
#[a-z])
#    command2
#;;
#*)
#    command3
#;;
#esac

案例1:条件1【0-9】输出的是数字;条件2【a-z】输出是字母;都不是输出都不是

#!/bin/bash
case $1 in
[0-9])
        echo "number"
;;
[a-z])
        echo "letter"
;;
*)
        echo "no!"
;;
esac

案例二:对nginx服务进行启动检测

#!/bin/bash
#c2508
#nginx start or stop script
case $1 in
start)
        status1=$(netstat -anptu | grep [n]ginx | wc -l)
        if [ $status1 -ge 1 ]
        then
                echo "进程已启动"
        else

                nginx
        fi
;;
stop)
        status1=$(netstat -anptu | grep [n]ginx | wc -l)
        if [ $status1 -eq 0 ]
        then
                echo "进程已停止"
        else
                nginx -s stop
        fi
;;
reload)
        nginx -s reload
;;
restart)
        status1=$(netstat -anptu | grep [n]ginx | wc -l)
        if [ $status1 -eq 0 ]
        then
                echo "进程已停止"
        else
                nginx -s stop
        fi

案例三:工作选项

while true
do

cat <<EOF
请选择:
1.备份文件
2.清理日志文件
3.软件升级
4.软件回滚
5.删库跑路
6.按q退出
EOF
read -p "请选择工作类型:" n1
case $n1 in
1)
              echo "备份文件"
;;
2)
              echo "清理日志文件"
;;
3)
              echo "软件升级"
;;
4)
              echo "软件回滚"
;;
5)
              echo "删除跑路"
;;
q)
              exit
;;
*)

for循环语句

格式1:

# 第一种写法
for NAME [in words ...]; do commands;done

# 第二种写法
for 变量 in 列表
	循环体
done

# 第三种写法
for 变量 in 列表
do
	循环体
done

执行机制:

依次将列表中的元素赋值给”变量名“;每次赋值后即执行一次循环体;直到列表中的元素耗尽,循环结束

格式2:

双小括号方法,即((…))格式,也可以用于算术运算,双小括号方法也可以使用bash shell 实现C语言风格的变量操作l=10;((l++))

for ((控制变量初始化;条件判断表达式;控制变量的修正表达式))
do
	循环体
done

说明:

  • 控制变量初始化:仅在运行到循环代码段时执行一次

  • 控制变量的修正表达式:每轮循环结束后会先进行控制变量修正运算,然后在做条件判断

案例一:输出1-10

#!/bin/bash
for i in {1..10}
do
       echo $i
done

案例二:九九乘法表

#!/bin/bash
for i in `seq 1 9`
do
        for j in `seq 1 $i`
        do
                echo -e -n "$i x $j = $[i*j]\t"
        done
        echo
done

for ((i=1;i<=9;i++))
do
        for ((j=1;j<=$i;j++))
        do
                echo -e -n "$j x $i = $[i*j]\t"
        done
        echo
done

案例三:输出目标目录内容,并添加时间戳

#!/bin/bash
for i in $(ls /boot)
do
        echo ${i}.$(date +%s)
done

while循环语句

格式

hile command; do commands;done

while condition;do 循环体 done

!/bin/bash
i=1
while [ $i -le 10 ]
do
       echo $i
       let i++
done

无限循环

while true;do
	循环体
done

案例:猜数游戏

脚本生成一个100以内得随机数,提示用户猜数字,根据用户得输入,提示用户猜小了或猜大了,直至用户猜对脚本结束

#!/bin/bash

price=$[RANDOM%1000]
while true
do
        read -p "请输入你猜的价格:"  guess
        if [ $guess -eq $price ]
        then
                echo "猜对了"
                exit
        elif [ $guess -lt $price ]
        then
                echo "小了"
        else
                echo "大了"
        fi
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值