基于Linux--Shell编程实现循环操作实验

for 循环:语句非常适用于列表对象无规律,且列表来源已固定(如某个列表文件)的场合。而对于要求控制循环次数、操作对象按数字顺序编号、按特定条件执行重复操作等情况。

则更适合使用另外一种循环——while 语句使用 while 循环语句时,可以根据特定的条件反复执行一个命令序列,直到该条件不再满足时为止。在脚本应用中,应该避免出现死循环的情况,否则后边的命令操作将无法执行。

1.计算闰年

#!/bin/bash
#功能描述(Description):判断闰年.
#条件1:能被4整除,但不能被100整除;条件2:能被400整除.
#满足条件1或者条件2之一就是闰年.

for i in {1..5000}
do
    if [[ $[i%4] -eq 0 && $[i%100] -ne 0 ||  $[i%400] -eq 0 ]];then
        echo "$i:是闰年"
    else
        echo "$i:非闰年"
    fi
done

运行结果

2.猴子吃香蕉问题

功能描述(Description):使用循环计算猴子吃香蕉的问题.

一只猴子第一天从树上摘了若干根香蕉,

当即就吃了一半,还不过瘾,又多吃了一根.

第二天猴子又将剩下的香蕉吃了一半,禁不住诱惑,又多吃了一根香蕉.

依此类推,每天都将剩余的香蕉吃一半后再多吃一根.

到了第九天,猴子发现只剩一根香蕉了,

请问这只猴子在第一天总共摘了多少根香蕉?

初始化香蕉数量为1,也就是第九天香蕉数位1.

每循环一次计算前一天的香蕉数量,循环8次得到第一天的香蕉数量

#!/bin/bash
banana=1
for i in {1..8}
do
    banana=$[(banana+1)*2]
done
    echo $banana

运行结果

3.验证IFS对循环影响

#!/bin/bash
#功能描述(Description):IFS对循环影响的演示.

#因为使用默认IFS的值,所以按空格为分隔符,X变量有4个值,for循环4次.
echo -e "\033[32m案例1:未自定义IFS,对X="a b c d"循环4次结束.\033[0m"
X="a b c d"
for i in $X
do
   echo "I am $i."
done
echo

#备份IFS分隔符
OLD_IFS="$IFS"
#定义分隔符为分号,而X变量的值又没有分号分隔的数据,因此for仅会循环1次.
echo -e "\033[32m案例2:自定义IFS为分号,对X="1 2 3 4"循环1次结束.\033[0m"
IFS=";"
X="1 2 3 4"
for i in $X
do
   echo "I am $i."
done
echo

#定义分隔符为分号,X变量的值也使用分号分隔,因此循环了4次,每次循环输出一个名字.
echo -e "\033[32m案例3:自定义IFS为分号,对X='Jacob;Rose;Vicky;Rick'循环4次结束.\033[0m"
IFS=";"
X="Jacob;Rose;Vicky;Rick"
for i in $X
do
   echo "I am $i."
done
echo

#定义多个分隔符,X变量的值也使用多个分隔符分隔.
#多个分隔符为或者关系,即使用分号或者句点或者冒号为分隔符.最终循环次数为4次.
echo -e "\033[32m案例4:自定义IFS为:分号|句点|冒号,对X=Jacob;Rose.Vicky:Rick循环4次结束.\033[0m"
IFS=";.:"
X="Jacob;Rose.Vicky:Rick"
for i in $X
do
   echo "I am $i."
done
echo

运行结果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值