第4周博客作业2020.01.05

SHELL脚本编程进阶

循环执行介

将某代码段重复运行多次,通常有进入循环的条件和退出循环的条件

重复运行次数:

  • 循环次数事先已知
  • 循环次数事先未知
    常见的循环的命令:for, while, until
    for循环
  • 格式1:

for 变量名 in 列表;do

循环体

done

  • 执行机制:
    依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束
  • for循环列表生成方式:
    直接给出列表

整数列表:


$(seq [start [step]] end)

返回列表的命令:
使用glob,如:*.sh
变量引用,如: @ , @, @,#

格式2

双小括号方法,即((…))格式,也可以用于算术运算,双小括号方法也可以使bash Shell实现C语言风格的变量操作

I=10;((I++))

do
循环体
done

说明:
控制变量初始化:仅在运行到循环代码段时执行一次控制变量的修正表达式:每轮循环结束会先进行控制变量修正运算,而后再做条件判断

while循环

格式:

while CONDITION; do
循环体
done

说明:
CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true”,则执行一次循环;直到条件测试状态为“false”终止循环,因此:CONDTION一般应该有循环控制变量;而此变量的值会在循环体不断地被修正

进入条件:CONDITION为true

退出条件:CONDITION为false

无限循环

while true; do
循环体
done

until循环

格式:

until CONDITION; do
循环体
done

说明:

进入条件: CONDITION 为false

退出条件: CONDITION 为true

无限循环

until false; do
循环体
Done

循环控制语句continue
continue [N]:提前结束第N层的本轮循环,而直接进入下一轮判断;最内层为第1层

格式:

while CONDITION1; do
CMD1
...
if CONDITION2; then
continue
fi
CMDn
...
done

循环控制语句break
break [N]:提前结束第N层循环,最内层为第1层

格式:

while CONDITION1; do
CMD1
...
if CONDITION2; then
break
fi
CMDn
...
done

循环控制shift命令
shift [n] 用于将参量列表 list 左移指定次数,缺省为左移一次。
参量列表 list 一旦被移动,最左端的那个参数就从列表中删除。while 循环遍历位置参量列表时,常用
到 shift
范例:doit.sh

# Name: doit.sh
# Purpose: shift through command line arguments
# Usage: doit.sh [args]
while [ $You can't use 'macro parameter character #' in math mode# -gt 0 ] # or
(( $# > 0 ))
do
echo $*
shift
done
./doit.sh a b c d e f g h

范例:示例:shift.sh

#!/bin/bash
#step through all the positional parameters
until [ -z "$1" ]
do
echo "$1"
shift
done
echo
./shfit.sh a b c d e f g h

while 特殊用法
while循环的特殊用法,遍历文件或文本的每一行
格式:

while read line; do
循环体
done < /PATH/FROM/SOMEFILE

说明:依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将行赋值给变量line

select循环与菜单

格式:

select variable in list ;do
循环体命令
done

说明:

  • select 循环主要用于创建菜单,按数字顺序排列的菜单项显示在标准错误上,并显示 PS3 提示符,等待用户输入

  • 用户输入菜单列表中的某个数字,执行相应的命令

  • 用户输入被保存在内置变量 REPLY 中

  • select 是个无限循环,因此要记住用 break 命令退出循环,或用 exit 命令终止脚本。也可以按ctrl+c 退出循环

  • select 经常和 case 联合使用

  • 与 for 循环类似,可以省略 in list,此时使用位置参量

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值