shell脚本中常用的逻辑语句

本文详细介绍了Bashshell脚本中的基本逻辑语句(if...else...fi和if...elif...fi),循环结构(for和while),以及数组的使用方法。通过实例演示了如何使用这些结构实现简单的条件判断和循环操作。
摘要由CSDN通过智能技术生成


此文档既可以当技术文档浏览学习,也可直接当脚本运行。

#!/bin/bash
#脚本练习


#shell脚本中常用的逻辑语句

#if...else...fi  简单判断语句

if_one(){
echo "简单的if语句"
read -p "Please enter any values  >" var
if [ -n "$var" ];then
    echo "您输入的是$var"
else
    echo "你输入的是空"

fi
}

#if...elif...fi  复杂判断语句
if_two(){
echo -e "稍微复杂的if语句\n"
read -p "Please enter a number  >" num
if [  $num -eq 100 ];then
    echo very good
elif [ $num -gt 80 ];then
    echo good
elif [ $num -gt 60 ];then
    echo gread
elif [ $num -lt 60 ];then
    echo too bad
else 
    echo "你确定你输入的是数字吗?"
    if_two
fi
}

#for..do...done循环(共三种格式)
#格式一
#    for 变量
#    do
#        语句
#    done
#格式二
#    for 变量 in 列表
#    do
#        语句
#    done
#格式三
#    for ((变量=初始值; 条件判断; 变量变化))
#    do
#        语句
#    done

for_one(){
#格式一:例
echo -e "for的简单格式一\n"
n=0
m=1
for i in $n $n
do
echo "$n+10"|bc
sleep 1
done
}

for_two(){
#格式二:例
echo -e "for的简单格式二\n"
for i in `seq 1 10`
do

echo -e -n "\a循环$i次\b\b\b\b\b\b\b\b\b"
sleep 1
done

}

for_three(){
#格式三:例
echo -e "for的简单格式三\n"
for ((i=0; i<10; ++i))
do
echo "循环 $i 次"
sleep 1
done
}

#关于位置变量 $0 $1 $2....$#
#$0脚本名,或函数名,也就是说第一个
#$1 第二个参数
#$#参数个数,不包括$0
case_one(){
case $1 in     
    int)
        if [ -n "$3" ];then
            expr $2 + 0 &>/dev/null
            if [ $? -gt 0 ];then
                echo -e "$A请输入数字!$Z"
                continue
            elif [ $2 -gt $3 ];then
                echo -e "$A选项不存在$Z"
                continue
            fi
        else
        echo -e "$A请输入数字!$Z"
        continue
        fi
    ;;
    var)
        grep "$2" $3 >> $LOG 2>&1 

        if [ $? -eq 0 ];then
            echo -e "\n $A配置的$2已存在!$Z"
            exit
        fi
    ;;
    yesno)

        case $2 in
        [yY][eE][sS]|[Yy])
        yesno=y
        ;;

        [nN][oO]|[Nn])
        yesno=n
        ;;
        *)
        echo -e -n "\n$A请按指示输入[y|n|yes|no]$Z >"
        read yesno
        svn_check yesno $yesno

        ;;
        esac

    ;;
    *)
        echo -e "$A未知的函数选项 $1 $Z"
        exit
    ;;
esac
}


#shell中的数组用法
#list=[if_one if_two for_one for_two for_three]
#获取数组总个数  echo ${#list[@]}  或  echo ${#list[*]} 
#取得数组单个元素的长度 echo ${#list[n]}  其中n 指的是数字
#获取数组中所有值 echo ${list[@]}  或  echo ${list[*]}
#取得数组单个元素 echo ${list[n]}  其中n 指的是数字

tuples(){

list=(
if_one
if_two
for_one
for_two
for_three

quit
)
for i in `seq 1 ${#list[*]}`
do
let n=i-1
echo "$i ${list[$n]}"
done
read -p "你想调用哪个函数:" xuan

}

quit(){
break
}
#while循环的格式
# while expression
# do
# command
# command
# ```
# done

# 1,计数器控制的while循环
#   主要用于已经准确知道要输入的数据和字符串的数目。
# 2,结束标记控制的while循环
#   主要用于不知道读入数据的个数,但是可以设置一个特殊的数据值来结束循环,该特殊值称为结束标 记,通过提示用户输入进行操作
# 3,标致控制的while循环
#   用户输入标志值来控制循环结束
# 4,命令行控制的while循环
#



while tuples
do
case_one int $xuan ${#list[@]}
let i=$xuan-1

echo -e "\n##############   ${list[$i]}  ###############\n"
${list[$i]}
echo -e "\n##############   END  ###############\n"
#break      #break语句用于终止整个循环的执行,完成后所有行代码break语句的执行。然后,它逐级的代码跟在循环结束。
continue    #continue语句break命令类似,但它会导致当前迭代的循环退出,而不是整个循环。
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值