25.11.28 shell 循环语句

for ((变量名;循环条件;更新变量))

        命令序列

done


for 变量名 in 取值列表
do
    命令序列
done
 

while [ 条件表达式 ]

do

        命令序列

done

实验:

代码

#!/bin/bash
RED='\033[0;31m'
GREEN='\033[0;32m'
RESET='\033[0m'
i=0
for ((;i!=9;))
do
	read -p "请输入用户名: " user
	if [ -z $user ];then
        	echo -e "${RED}用户名不能为空!请输入用户名!" && exit
	fi

		if [ -e /home/$user ];then
			read -p "用户已经存在,是否修改用户密码?  yes | no  " input
			if [ $input == "yes" ];then
				read -p "请输入修改的用户密码" password3
				echo $password3 | passwd $user --stdin 
				echo "修改成功,将创建新用户" && sleep 5 && clear && echo "用户名: $user  密码: $password3" >> usr_backup.txt
			continue
		elif [ $input == "no" ];then
			echo -e "${GREEN}不修改已存在用户的密码,将重新创建用户${RESET}"
			continue
		else
			echo -e "${RED}输入参数错误,将重新创建用户${RESET}"
			continue
		
		fi
	fi

read -s -p "请输入密码: " password
echo
read -s -p "再次输入密码: " password2
[ $password == $password2 ] && echo -e "${GREEN}密码校验成功${RESET}"
echo $password2 > password.txt
[ $password != $password2 ] && echo -e "${RED}密码不一致,请重新输入${RESET}" && exit
read -p "用户名与密码校验成功,是否创建用户 yes|no:" input2
	if [ $input2 == "yes" ];then
		useradd $user
		sleep 0.5
		echo "$password2" | passwd $user --stdin
		echo -e  "${GREEN}用户已创建${RESET}"
		sleep 0.5
		echo -e "用户名: $user  密码: $password2" >> usr_backup.txt
		sleep 1
		echo -e "${GREEN}用户信息${RESET}"
		tail -1 /etc/shadow
		echo -e "${GREEN}用户列表${RESET}"
		sleep 5
		clear
		ls /home
		sleep 2
                read -p "是否还需要创建新用户  yes | no  " a
                if [ $a != "yes" ];then
                        exit
                fi
	
	else
		echo "已退出"
	fi
	            
done

#!/bin/bash
RED='\033[0;31m'
GREEN='\033[0;32m'
RESET='\033[0m'

while [ true ]
do
        read -p "请输入编号
                   1:创建用户,设置密码
                   2:设置修改本机IP地址
                   3:服务状态
                   4:计算器
                   5:退出
                        :" input
        case $input in
                 1)
                        i=0
                        for ((;i!=9;))
                        do
                        read -p "请输入用户名: " user
                if [ -z $user ];then
                echo -e "${RED}用户名不能为空!请输入用户名!" && break
                fi

                if [ -e /home/$user ];then
                        read -p "用户已经存在,是否修改用户密码?  yes | no  " input
                        if [ $input == "yes" ];then
                                read -p "请输入修改的用户密码" password3
                                echo $password3 | passwd $user --stdin
                                echo "修改成功,将创建新用户" && sleep 5 && clear && echo "用户名: $user  密码: $password3" >> usr_backup.txt
                        continue
                elif [ $input == "no" ];then
                        echo -e "${GREEN}不修改已存在用户的密码,将重新创建用户${RESET}"
                        continue
                else
                        echo -e "${RED}输入参数错误,将重新创建用户${RESET}"
                        continue

                fi
        fi

read -s -p "请输入密码: " password
echo
read -s -p "再次输入密码: " password2
[ $password == $password2 ] && echo -e "${GREEN}密码校验成功${RESET}"
echo $password2 > password.txt
[ $password != $password2 ] && echo -e "${RED}密码不一致,请重新输入${RESET}" && exit
read -p "用户名与密码校验成功,是否创建用户 yes|no:" input2
        if [ $input2 == "yes" ];then
                useradd $user
                sleep 0.5
                echo "$password2" | passwd $user --stdin
                echo -e  "${GREEN}用户已创建${RESET}"
                sleep 0.5
                echo -e "用户名: $user  密码: $password2" >> usr_backup.txt
                sleep 1
                echo -e "${GREEN}用户信息${RESET}"
                tail -1 /etc/shadow
                echo -e "${GREEN}用户列表${RESET}"
                sleep 5
                clear
                ls /home
                sleep 2
                read -p "是否还需要创建新用户  yes | no  " a
                if [ $a != "yes" ];then
                        break
                fi

        else
                echo "已退出"
        fi

done;;
                2)
read -p "请输入网卡名称:ens-    " name

if [ -e /etc/sysconfig/network-scripts/ifcfg-ens$name ];then

        read -p " 同名网卡已存在,是否修改配置文件信息 yes | no  :" input2

        if [ $input2 == "yes" ];then
                vim /etc/sysconfig/network-scripts/ifcfg-ens$name
        else
                break
        fi
else
        read -p "无同名网卡,是否创建一个新的网卡配置文件 yes | no  :" input2
        if [ $input2 == "yes" ];then
                read -p "请输入IP地址:192.168.x.x       " ip
                read -p "请输入网关地址:192.168.x.x     " gateway
                read -p "请输入DNS地址:" dns
                touch /etc/sysconfig/network-scripts/ifcfg-ens$name
                echo "TYPE=Ethernet
                PROXY_METHOD=none
                BROWSER_ONLY=no
                BOOTPROTO=static
                DEFROUTE=yes
                IPV4_FAILURE_FATAL=no
                IPV6INIT=yes
                IPV6_AUTOCONF=yes
                IPV6_FAILURE_FATAL=no
                IPV6_ADDR_GEN_MODE=stable-privacy
                NAME=ens$name
                UUID=99091610-7b81-479e-9b14-26819532bad3
                DEVICE=ens$name
                ONBOOT=yes
                IPADDR=$ip
                PREFTX=24
                GATEWAY=$gateway
                DNS1=$dns
                DNS2=8.8.8.8" > /etc/sysconfig/network-scripts/ifcfg-ens$name
                echo "创建成功,正在重启网络服务"
                sleep 1
                systemctl restart network
                echo " 网络信息: "
                cat /etc/sysconfig/network-scripts/ifcfg-ens$name
        else
                break
        fi
fi;;

                3)
                while [ true ]
                do
                read -p " 请输防火墙入服务状态 start | stop | restart | status | exit :   "  input3
                case $input3 in
                        start)
                                echo "正在启用防火墙"
                                sleep 1
                                systemctl start firewalld.service;;
                        stop)
                                echo "正在关闭防火墙"
                                sleep 1
                                systemctl stop firewalld.service;;
                        restart)
                                echo "正在重启防火墙"
                                sleep 1
                                systemctl restart firewalld.service;;
                        status)
                                echo "查看防火墙状态"
                                sleep 1
                                systemctl status firewalld.service;;
                        exit)
                                echo "退出"
                                break;;
                esac
                done;;

                4)
        for ((i;;))
        do
                read -p "请输入第一个数字:" a
                read -p "请输入第二个数字:" b
                read -p "请输入你要进行的运算:
                输入1:执行加法
                输入2:执行减法
                输入3:执行乘法
                输入4:执行除法
                输入5:执行取余
                输入6:退出计算器       " c
                case $c in
                        1)
                        echo $a+$b=`expr $a + $b`
                        ;;
                        2)
                        echo $a-$b=`expr $a - $b`
                        ;;
                        3)
                        echo $a*$b=`expr $a \* $b`
                        ;;
                        4)
                                echo $a÷$b=`expr $a / $b`
                        ;;
                        5)
                        echo $a%$b=`expr $a % $b`
                        ;;
                        6)
                        echo "  *已退出*"
                        break
                esac
        done;;

                5)
                echo  " 退出脚本,期待下次使用 "
                sleep 1
                clear
                break;;


                *)
                echo " 请重新输入 "
                continue;;
esac
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值