【Shell基础】条件判断与流程控制

if

if基本语法

if [ condition ]; then
    # 命令
fi

条件测试语法

1. 使用 [ ]

if [ condition ]; then
    # 命令
fi

示例

a=10
b=20

if [ $a -eq $b ]; then 
	echo "相等"
fi    
if [ $a -ne $b ]; then 
	echo "不等"
fi 

if [ $a -gt $b ]; then 
	echo "大于"
fi 

if [ $a -lt $b ]; then 
	echo "小于"
fi  

if [ $a -ge $b ]; then 
	echo "大于等于"
fi 

if [ $a -le $b ]; then 
	echo "小于等于"
fi

2. 使用 [[ ]]

if [[ condition ]]; then
    # 命令
fi

示例

#!/bin/bash

file="/etc/passwd"

if [[ -f "$file" ]]; then
    echo "文件 $file 存在"
    echo "文件大小: $(wc -l < "$file") 行"
else
    echo "文件 $file 不存在"
fi

if-elif-else 结构

if [[ condition1 ]]; then
    echo "条件1成立"
elif [[ condition2 ]]; then
    echo "条件2成立"
else
    echo "所有条件都不成立"
fi

示例

#!/bin/bash

read -p "请输入文件名: " filename

if [[ "$filename" == *.txt ]]; then
    echo "这是文本文件"
elif [[ "$filename" == *.jpg || "$filename" == *.png ]]; then
    echo "这是图片文件"
elif [[ "$filename" =~ \.py$ ]]; then
    echo "这是Python文件"
else
    echo "未知文件类型"
fi

case

基本语法

case 变量 in
    模式1)
        命令1
        ;;
    模式2)
        命令2
        ;;
    模式3|模式4)
        命令3
        ;;
    *)
        默认命令
        ;;
esac

基本示例

示例1:简单的字符串匹配

#!/bin/bash

read -p "请输入一个水果名: " fruit

case $fruit in
    apple)
        echo "这是苹果"
        ;;
    banana)
        echo "这是香蕉"
        ;;
    orange)
        echo "这是橙子"
        ;;
    *)
        echo "未知水果"
        ;;
esac

示例2:系统服务管理脚本

#!/bin/bash

case $1 in
    start)
        echo "启动服务..."
        # 启动命令
        ;;
    stop)
        echo "停止服务..."
        # 停止命令
        ;;
    restart)
        echo "重启服务..."
        # 重启命令
        ;;
    status)
        echo "服务状态..."
        # 状态查询
        ;;
    *)
        echo "用法: $0 {start|stop|restart|status}"
        exit 1
        ;;
esac

for

1. 基本语法

第一种:遍历一个列表

bash

for 变量 in 值1 值2 值3 ... 
do
    命令
done

第二种:类C风格的循环(常用于数字循环)

bash

for (( 初始值; 条件; 步进 ))
do
    命令
done

2. 遍历列表

示例1:直接列出所有值

for fruit in apple banana orange
do
    echo "I like $fruit"
done

示例2:遍历命令输出

# 遍历当前目录下的.txt文件
for file in *.txt
do
    echo "文本文件: $file"
done

示例3:遍历位置参数

#!/bin/bash
# 假设脚本名为script.sh,执行: ./script.sh arg1 arg2 arg3
for arg in "$@"
do
    echo "参数: $arg"
done
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值