zoukankan      html  css  js  c++  java
  • shell --Day 6

    脚本参数交互与for语句循环

    1、脚本参数交互

    $n  $1  $2  ...${10} ${11}...//传参,通过这些传参我们可以将相关的参数输入到脚本中去。

    read命令实现脚本参数输入:

    read语句可以多个参数同时输入,如果变量个数多于输入的数值,就把最后多余的数值赋值给最后一个变量。

    例:read a b c

    [root@lsl ~]# read a b c

    1、-p可以指定输入提示文本

    [root@lsl ~]# vi b.sh
    #!/bin/bash
    #
    read -p "请输入要查看的内容:" a
    echo $a

    2、设置超时时间

    [root@lsl ~]# vi b.sh  
    #!/bin/bash
    #
    read -t 5 -p "请输入要查看的内容:" a  //设置超时时间为5s,5s后自动退出
    echo $a

    此时未输入任何内容,5s后退出。

    3、需要给read指定的变量,提供默认值

    [$? -eq 0] && exit 0 || exit 1

    练习:输入一个设备文件,输出这个设备文件的基本信息

    #!/bin/bash
    #
    cat << EOF
        请输入正确的信息如:sda |sdb|sda1
    EOF
    read -t 5 -p "请输入设备文件名:" DiskName
    [ ! $? -eq 0 ] && echo "请输入正确的信息" && exit 1
    if [ -b /dev/$DiskName ];then
            fdisk -l /dev/$DiskName
            exit 0
    else
            echo "请正确书写"
            exit 2
    fi

    for语句循环:

    1)使用场景:遍历

    2)在python语言中,遍历的内容通过range(0,10,2)  --2代表不长

    3)在shell中,遍历的内容来源会有很多,如:{1..10}

    4)命令,可以通过文件通配符来进行文件的遍历操作," $* ","$@ ",直接写入字符串;*

    for 语句写法:

    for 变量    in  所要遍历的内容;do

                    循环体

    done

    示例:顺序打印1-10

    [root@lsl ~]# vim d.sh
    #!/bin/bash
    #
    for i in {1..10};do
         echo $i
    done

    1.1 五种要遍历内容的方式:

    字符遍历,例:

    [root@lsl ~]# vim e.sh 
    #!/bin/bash
    #
    for i in a b c d ;do
       echo $i
    done

    数值的循环,例:

    [root@lsl ~]# vim e.sh 
    #!/bin/bash
    #
    for i in {2..10} ;do
       echo $i
    done

    取命令后的运行结果:

    [root@lsl ~]# vim f.sh
    #!/bin/bash
    #
    for i in `seq 1 2 9`;do
       echo $i
    done

    练习:

    1、1到100的偶数和;

    [root@lsl ~]# vi  b.sh 
    #!/bin/bash
    #
    #!/bin/bash
    sum=0
    for i in `seq 2 2 100`
    do
    let sum+=i
    done
    echo "sum=$sum" 

     

     2、找出user这个用户的所有文件,判断文件大小,并将大于1M的文件显示处理。

    #!/bin/bash
    #
    for FileName in $(find / -user user1);do
    count = `wc -c $FileName | cut -d "" -f1`
    if [ $count -gt 1 ];then
       echo $FileName
       fi
    done

    3、将/var/log下的以.log结尾的所有文件的行数统计出来

    #!/bin/bash
    #
    for Line in /var/log/*.log;do
       wc -l $Line
    done

    4、ping 网络中有哪些up的主机

    #!/bin/bash
    #
    for i in {1..254};do
    ping -c 1 10.6.8.$i & > /dev/null
       if [ $? -eq 0 ];then
       echo "ip is up"
    else
       echo "ip is done"
    fi
    done

    5、99乘法表

    [root@lsl ~]# vi m.sh  
    #!/bin/bash
    #
    for((i=1;i<10;i++))
    do
        m=1
        while((m<i))
        do
           # 不换行输出
            echo -ne "     	"
            ((m=m+1))
        done
        for((j=i;j<10;j++))
        do
            ((k=i*j))
            echo -ne "$i*$j=$k	"
        done
        echo
    done

  • 相关阅读:
    Awesome Adb——一份超全超详细的 ADB 用法大全
    adb devices unauthorized的解决办法
    Vim用法AAAAA
    Security arrangements for extended USB protocol stack of a USB host system
    六 Python基础 字符串和编码
    四 Python基础
    三 Python解释器
    二安装Python
    Python教程(一)Python简介
    Python基本语法[二]
  • 原文地址:https://www.cnblogs.com/Blockblogs/p/11580493.html
Copyright © 2011-2022 走看看