• bash编程之循环控制:


    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、正常退出前,显示本地共安装的程序包的个数;
  • 相关阅读:
    Ubuntu下Nginx安装
    vi基本状态
    07. 背景图片距离
    06. 用css实现三角形
    Leetcode刷题 (二)
    Leetcode刷题 (一)
    目标检测中的AP计算
    python 引用(import)文件夹下的py文件
    git 上传和克隆文件
    Windows系统下Pytorch与python版本不匹配导致模块包导入错误
  • 原文地址:https://www.cnblogs.com/as007012/p/10009152.html
Copyright © 2020-2023  润新知