shell流程控制语句

1 test

test 条件
条件为真返回 0,条件为假返回 1
[ 条件 ]
test 能够理解3种类型的表达式
1.文件测试
2.字符串比较
3.数字比较

文件测试

-f存在且是普通文件
-d存在且是目录
-h存在且是符号链接
-b块设备
-c字符设备
-e文件存在

字符串

-n STRING字符串长度不为零
-z STRING字符串长度为0
=判断两个字符串是否一样
STRING1 = STRING2
!=判断两个字符串是否不一样
STRING1 != STRING2

数字

eq等于ne不等于
ge大于等于le小于等于
gt大于lt小于

2 if语句

流控制:

•在一个shell脚本中的命令执行顺序称作脚本的流。大多数脚本会根据一个或多个条件来改变它们的流。

•流控制命令:能让脚本的流根据条件而改变的命令称为条件流控制命令

exit语句:退出程序的执行,并返回一个返回码,返回码为0正常退出,非0为非正常退出,例如:

•exit 0

条件判断

If代码返回0表示真,非0为假
if语句语法如下: 1

if [ $1 -eq 1 ];then
    echo '等于1'
elif [ $1 -eq 2 ];then
    echo '等于二'
else
    echo '既不等一,也不等于二'
fi

练习(选做):
1)检测apache是否运行,如果没有运行则启动,并记录启动的时间,保存到日志中。

#!/bin/bash
systemctl stop nginx
systemctl status httpd | grep Active |awk '{print $2}'
if [ "$status" = "active" ]
then
    echo "apache 是启动的 "
else
    systemctl start httpd && date >> /root/apache_start.log
    echo "apache 已启动"
fi

3 case

case 语句是 shell 中流控制的第二种方式,语法如下:

read -p "case" var
case $var in
     模式1)
			list1
			;; 
     模式2)
			list2
			;; 
    模式N)
        	listN
        	;;
       *)
			list*
			;; 
esac

命令;;表明流应该跳转到case语句的最后。

4 for循环

for i in {取值范围}    # for 关键字  i 变量名 in 关键字  取值范围格式 1 2 3 4 5

do                    # do 循环体的开始
	循环体

done                  # done 循环体的结束

for循环批量创建用户

#!/bin/bash 
while :     #死循环
do
read -p "请设置用户前缀/数量/密码: " prefix num pass 
cat <<-EOF                 # 打印到屏幕
用户前缀:$prefix
用户数量:$num
用户密码:$pass
EOF
read -p "是否确认创建:[Y/N]" action 
if [ $action = Y ];then
	 echo "starting create users..." 
	 break
fi
done
for i in `seq -w $num`
do
    user=$prefix$i
    id $user &>/dev/null 
    if [ $? -eq 0 ];then
          echo "$user  is already exist"
    else
          useradd $user
          echo $pass | passwd --stdin $user &>/dev/null  # 用户密码设置不需要交互
    fi 
done

5 while

while 条件    # while 关键字  条件  [ $1 -lt 10 ] ,while循环,条件为真的情况下,会循环
do
		循环体
done
  • 29
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值