bash编程之循环控制:
for varName in LIST; do
循环体
done
 
while CONDITION; do
循环体
done
 
until CONDITION; do
循环体
done
 
循环控制:
continue: 提前结束本次循环而开始评估下一轮;
break [n]: 跳出当前循环
 
练习:求100以内所有偶数之和;
declare -i sum=0
for i in {1..100}
do
 if [ $[$i%2] -eq 0 ];then
   let sum+=$i
 fi
done
echo $sum
 
或:                    
 
declare -i evenSum=0
declare -i i=1
 
while [ $i -le 100 ]; do
if [ $[$i%2] -eq 0 ]; then
let evenSum+=$i
fi
let i++
done
echo $evenSum
 
 
declare -i evenSum=0
declare -i i=2
 
while [ $i -le 100 ]; do
let evenSum+=$i
let i+=2
done
echo $evenSum
 
 
练习:提示用户输入用户名,显示用户的ID号;直到用户输入quit退出;
#!/bin/bash
#
if [ $UID -ne 0 ]; then
echo "`basename $0` must be running as root"
exit 1
fi
while true; do
read -p "Enter a user name: " userName
if [ "$userName" == 'quit' ]; then
break
fi
 
id -u $userName
done
 
 
 
 
#!/bin/bash
#
while true; do
        read -p "Enter a user name: " userName
        if [ "$userName" == 'quit' ]; then
                break
        fi
 
        if ! id $userName &> /dev/null; then
                echo "$userName not exist."
                continue
        fi
 
        id -u $userName
done
 
练习:写一个脚本,
1、提示用户输入一个磁盘设备的设备文件,如果设备文件不存在,就提示用户重新输入,直到用户输入正确为止;
2、用户可以输入quit退出;
 
#!/bin/bash
#
while true; do
read -p "Enter a block device file: " diskFile
if [ "$diskFile" == 'quit' ]; then
exit 7
fi
 
if [ -b "$diskFile" ]; then
break
else
echo "Wrong device file..."
fi
done
 
练习:扩展前一题
当用户给出正确的块设备后:
1、显示用户输入块设备,并提示用户,后续的操作会损坏设备上的所有文件,让用户选择是否继续
2、如果用户输入y,则继续后面的操作;
3、如果用户输入n,则显示用户选择了中止,并退出脚本;
4、输入任何其它字符,则让用户重新选择;
 
练习:扩展上一题
1、如果用户选择了y, 则抹除指定块设备上的所有分区;
#!/bin/bash
while true; do
        read -p "Enter a block device file: " diskFile
        if [ "$diskFile" == 'quit' ]; then
                exit 7
        fi
 
        if [ -b "$diskFile" ]; then
                break
        else
                echo "Wrong device file..."
        fi
done
echo "Device is: $diskFile."
 
while true; do
        read -p "Y or y for continue, N or n for quiting: " option
        option=`echo $option | tr 'A-Z' 'a-z'`
        if [ "$option" == 'n' ]; then
                exit 8
        fi
 
        if [ "$option" == 'y' ]; then
                break
        else
                echo "Wrong input..."
        fi
done
dd if=/dev/zero of=$diskFile bs=512 count=1
 
 
练习:写一个脚本
1、提示用户输入一个目录路径;
2、显示目录下至少包含一个大写字母的文件名;
 
#!/bin/bash
#
while true; do
        read -p "Enter a directory: " dirName
        [ "$dirName" == 'quit' ] && exit 3
        [ -d "$dirName" ] && break || echo "Wrong directory..."
done
 
 
for fileName in $dirName/*; do
        if [[ "$fileName" =~ .*[[:upper:]]{1,}.* ]]; then
                echo "$fileName"
        fi
done
 
 
 
练习:写一个脚本
前提:配置好yum源
1、如果本机没有一个可用的yum源,则提示用户,并退出脚本(4);如果此脚本非以root用户执行,则显示仅有root才有权限安装程序包,而后退出(3);
2、提示用户输入一个程序包名称,而后使用yum自动安装之;尽可能不输出yum命令执行中的信息;
如果安装成功,则绿色显示,否则,红色显示失败;
3、如果用户输入的程序包不存在,则显示错误后让用户继续输入;
4、如果用户输入quit,则正常退出(0);
5、正常退出前,显示本地共安装的程序包的个数;

bash编程之循环控制:的更多相关文章

  1. bash编程基础

    bash变量 变量命名: 1.不能使用程序中的关键字(保留字) 2.只能使用数字.字母和下划线,且不能以数字开头 3.要见名知义 变量类型: 数值型:精确数值(整数),近似数值(浮点型) 字符型:ch ...

  2. bash编程之多分支if 语句及for循环

    第十七章.bash编程之多分支if 语句及for循环 if语句三种格式 多分支if语句练习 for循环 17.1.if语句的三种格式 单分支if语句 if condition;then 条件为真执行的 ...

  3. bash编程总结

    bash应该是目前Linux上最流行的shell脚本解释程序了(还有个shell叫dash,我太讨厌这个东东了.),只要你在linux上工作,并且希望自己能够工作得更愉悦,那么你应该熟悉最基本的bas ...

  4. Linux中bash编程

    bash编程也叫shell编程 预定义变量         $? 最后一次执行的命令的返回状态.如果这个变量的值为0,证明上一个命令正确的执行:如果这个变量返回的值非0(具体是那个数,有命令自己来决定 ...

  5. [shell] Bash编程总结

    由于工作需要,之前的几个月写了一些Bash脚本,主要完成自动测试.打包.安装包等.虽然相比C++编程,要简单.傻瓜,但其在类Unix系统中可以大大提高工作的效率.所以在此对脚本编程过程中一些注意事项进 ...

  6. bash编程的信号捕获:

    bash编程的信号捕获: kill -l KILL无法捕捉:   trap 'COMMAND' SIGNAL,    信号捕捉用于:在中途中止时做一些清理操作.   一. trap捕捉到信号之后,可以 ...

  7. 怎样用 Bash 编程:逻辑操作符和 shell 扩展

    学习逻辑操作符和 shell 扩展,本文是三篇 Bash 编程系列的第二篇. Bash 是一种强大的编程语言,完美契合命令行和 shell 脚本.本系列(三篇文章,基于我的 三集 Linux 自学课程 ...

  8. 怎样用 Bash 编程:语法和工具

    让我们通过本系列文章来学习基本的 Bash 编程语法和工具,以及如何使用变量和控制运算符,这是三篇中的第一篇. Shell 是操作系统的命令解释器,其中 Bash 是我最喜欢的.每当用户或者系统管理员 ...

  9. Linux Bash编程

    在Linux系统介绍中,介绍了shell的多个版本,现在的Linux发行版基本都默认使用bash(Bourne Again shell),兼容Bourne shell (sh),本文将简要介绍Bash ...

随机推荐

  1. appium自动化测试框架——在python脚本中执行dos命令

    一般我们运行dos命令,会有两种需求,一种是需要收集执行结果,如ip.device等:一种是不需要收集结果,如杀死或开启某个服务. 对应的在python中就要封装两种方法,来分别实现这两种需求. 1. ...

  2. Luogu P1558 色板游戏【线段树/状态压缩】By cellur925

    题目传送门 今天非常想再看一遍霸王别姬想不进去题于是开始刷数据结构 注意到至多只有\(30\)种颜色,啊啊啊啊我一开始竟然想的不是状态压缩而是在线段树中存一个30大小的数组,这样每次更新的时候暴力循环 ...

  3. 五分钟搞定 Linux 文档全部知识,就看这篇文章

    作者:无痴迷,不成功 来源:见文末 写在前面 我们都知道Linux是一个支持多用户.多任务的系统,这也是它最优秀的特性,即可能同时有很多人都在系统上进行工作,所以千万不要强制关机,同时,为了保护每个人 ...

  4. Java 多线程高并发编程 笔记(二)

    1. 单例模式(在内存之中永远只有一个对象) 1.1 多线程安全单例模式——不使用同步锁 public class Singleton { private static Singleton sin=n ...

  5. python进阶02 特殊方法与特殊属性

    python进阶02 特殊方法与特殊属性 一.初始化.析构 1.初始化 # python中有很多双下划线开头且以下划线结尾的固定方法,它们会在特定的时机被触发执行,这便是特殊方法 # 在实例化的时候就 ...

  6. hdu2027 trie树 字典树模板

    #include <iostream> #include <cstdio> #include <cstring> #include <sstream> ...

  7. Netty(6)关闭

      客户端: public static void main(String[] args) throws Exception { final SslContext sslCtx; if (SSL) { ...

  8. 如何更改Linux yum源?

    centos下可以通过yum很方便快捷的安装所需的软件和库,如果yum的源不好,安装速度会非常慢,centos默认官方源似乎都是国外的,所以速度无法保证,我一直使用163的源,感觉速度不错.下面就说说 ...

  9. 4.词法结构-JavaScript权威指南笔记

    今天是第二章.所谓词法结构(lexical structure),就是写代码中最基本的东西,变量命名,注释,语句分隔等,这是抄书抄的... 1.字符集,必须是Unicode,反正Unicode是ASC ...

  10. 基于JAVA的设计模式之组合模式

    概念 将所有对象组合成一种树形结构,有分支节点.叶子节点,分支节点可以有自己的子节点,子节点可以是分支节点.叶子节点,可以进行增删的操作,而叶子节点不可以.比如文件夹就是一个分支节点,而文件就是一个叶 ...