Linux流程控制

if语句

基本格式
复制代码
if condition
then
    command1 
fi

写成一行

复制代码
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi
if-else语句
格式
复制代码
if condition
then
    command1 
    command2
    ...
    commandN
else
    command
fi

if else- if else

复制代码
if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi
if实际应用
复制代码
#!/bin/bash
a=10
b=20
c=100
if [[ ! $a -eq $b && $b -lt $c ]]
then
        echo "a小于b并且c大于b"
fi
if ((a>b)) #可以使用(())代替,括号内可以使用<、>等符号,而且不需要加$符号,也可以加
then
        echo "a>b"
else
        echo "a<b"
fi

\[\]和(())的区别

  • `\[\]`用于字符串或整数条件判断,可以执行大小写敏感的字符串比较、文件测试、逻辑运算、整数比较等,是一个更通用的条件判断方式。
  • `(( ))`用于整数条件判断,可以执行算术运算和逻辑运算,是专门用于整数运算的语句。需要注意的是,在使用`(( ))`时,变量名前面不需要加美元符号。

for语句

基本格式
复制代码
for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

写成一行

复制代码
for var in item1 item2 ... itemN; do command1; command2... done;
实例
复制代码
#循环输出1 2 3 4 5这些值
for loop in 1 2 3 4 5 
do   
    echo "the value is :$loop"
done

#循环输出字符串
for str this is a cat
do
    echo "$str"
done

#范围循环,学过c语言的应该很熟悉
for((i=0;i<10;i++))
do
    echo "i value: $i"
done

输出结果

while语句

基本格式
复制代码
while condition
do
    command
done
实例

判断

复制代码
#!/bin/bash
a=10
b=20
i=5
while(($i>=0))
do
        echo "$i"
        i=$((i-1))
        #let "i--" 效果是一样的
done

读取录入信息

复制代码
while read FILM
do
        echo "您输入的是:$FILM"
done

无限循环

复制代码
while :
do
    command
done
#或者
while true
do
    command
done
#或者
for (( ; ; ))

until语句

until语句与while刚好相反,循环执行直到条件为true时停止

基本格式
复制代码
until condition
do
    command
done
实例
复制代码
until [ $a -ge 10 ]
do
    echo $a  
    a=`expr $a + 1`
    #a=$((¥a + 1)) 效果一样
done

case语句

基本格式
复制代码
case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac
#两个分号表示break
实例

输入判断

复制代码
#!/bin/bash
a=$1
echo $a
case $a in
1)
        echo "您选择了1"
;;
2)
        echo "您选择了2"
;;
3)
        echo "您选择了3"
;;
*)
        echo "您 的选择不在范围内"
;;
esac

break/continue

break

跳出所有循环

continue

跳出当前循环

相关推荐
兵bing2 分钟前
Docker Compose 配置文件归纳总结-千问
运维·docker·容器
dok1214 分钟前
Johannes 《Linux内核模块与设备驱动开发:编写Linux驱动程序》 (11)kmalloc 动态内存分配和struct file中的私有数据
linux·驱动开发·算法
IT小盘22 分钟前
17-构建Prompt测试集-提示词优化不再凭感觉
服务器·windows·prompt
INNOVIX稳石机器人32 分钟前
从“存得下”到“管得活”:稳石四向穿梭车如何重塑密集仓储新逻辑?
大数据·运维
无足鸟ICT1 小时前
【RHCA+】if判断
linux
大魔王爱学习1 小时前
终端bash&zsh中实现基于前缀的历史命令搜索
linux·bash
2401_858286111 小时前
OS81.【Linux】基于环形队列的多生产者-多消费者模型
linux·运维·服务器·环形队列
U-Mail邮件系统1 小时前
企业邮箱搭建用自建还是租用?合规、成本与安全性对比解析
服务器·网络·企业邮箱系统
X1A0RAN1 小时前
Jenkins Pipeline 变量打印指南
运维·servlet·jenkins
吴爃1 小时前
小微企业 SRE 稳定性建设(二):上线前 P0 验收项目
运维·可用性测试·稳定性·故障