###

一、if 循环

  1. 一般语法

# 单个括号
if [ 条件 ]; then
    #结果1
else 
    #结果2
fi 
或
if [ 条件 ]
then
    #结果1
else 
    #结果2
fi

### 双方括号(推荐)
if [[ 条件 ]]; then 
    #结果1
else 
    #结果2
或
if [[ 条件 ]]
then 
    #结果1
else 
    #结果2


  • 条件可以是比较、逻辑运算等,满足执行结果1,不满足执行结果2
  • [][[]] 内的条件前后必须有空格(如 [ -f "$file" ]),否则报错。
  • [[]]相比[]性能较好,可以适配正则表达式
  • &&|| 优先级高于 [ ],需用括号分组:

2.常用的比较、逻辑运算符和例子

数字比较操作符:

  • -eq:等于
  • -ne:不等于
  • -gt:大于
  • -lt:小于
  • -ge:大于等于
  • -le:小于等于
num=1
if [ $num -eq 1 ]; then
    echo  "num===1"
else
    echo "num不是1"
fi

字符串比较符:

  • =:相等
  • !=:不相等
  • -z 字符串内容为空则为真
  • -n 字符串内容不为空则为真
name="lisj"
if [ $name ="lisj" ]; then
    echo "名字正确"
else
    echo "no"
fi

文件判断:

  • -f:判断文件是否存在且为普通文件
  • -d:判断文件是否存在且为目录
  • -e:判断文件是否存在
  • -s 文件是否为空
date_dir=test.txt
if [ -f $date_dir ]
then
    echo "存在文件,无需创建"
    if [ -s $date_dir ]
    then
            echo "存在值"
    else
            echo "null"
    fi
else
   echo "不存在目录"
fi

二、case循环

1.case循环基本语法

case $1 in
start)
  command
  ;;
*)
  command
esac  

2.case循环例子

#!/bin/bash
echo -e "请选择1、2、3
1.name
2.passwd
3.tom
======="
read -p "输入你要的数字:" num
case $num in
        1):
                echo "选择为name";;
        2):
                echo "选择为passwd";;
        *):
                echo "选择未知";;
esac

三、for循环

1.for循环基本语法

for 变量名 in 循环次数
do
    循环体
done

2.for循环例子

#!/bin/bash
for i in 1 2 3 4 5
do
    echo "hello,word$i"
done
或者
#!/bin/bash
for i in {1..5}
do
    echo "hello,word$i"
done

或者
#!/bin/bash
for i in $(seq 1 5)
do
    echo "hello,word$i"
done

# 获取系统下的user
for user in $(cat /etc/passwd)
do
    echo "$user "|awk -F":" '{print "user name is "$1}'
done

四、while循环

1.while循环基本语法

while [循环判断条件]
do
    执行的命令
done

2.while循环例子

read -p "请输入数字1:" num

while [ "$num" != "1" ]
do
    read -p "请输入数字:" num
done

五、循环控制(break、continue、exit)

 1.循环控制-break

        结束当前的循环,但会继续执行循环之后所有的代码

#!/bin/bash

for i in {1..3}
do
    echo "$i"
    break
    echo "123"
done

echo "all is ok"

结果:

2.循环控制-continue

        忽略本次循环剩余的代码,直接进入下次循环,直到循环结束

#!/bin/bash

for i in $(seq 1 3)
do
    echo "$i"
    continue
    echo "456" 
done

echo "all is ok"

 结果:

3.循环控制-exit

        遇到exit直接退出整个脚本

#!/bin/bash

for i in $(seq 1 3)
do
    echo "$i"
    exit
    echo "12"
done

echo "all is ok"

结果:

六、实际应用

https://blog.csdn.net/j_0517/article/details/156850297?spm=1001.2014.3001.5502

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐