zoukankan      html  css  js  c++  java
  • 学习linux的菜鸟 shell脚本中的循环

    shell脚本中的循环

    常用到的循环有for循环和while循环。

    1. for循环
    [root@localhost sbin]# cat for.sh
    #!  /bin/bash
    
    for i in `seq 1 5`; do
        echo $i
    done
    

    脚本中的 seq 5 表示从1到5的一个序列。你可以直接运行这个命令试下。脚本执行结果为:

    [root@localhost sbin]# sh for.sh
    1
    2
    3
    4
    5
    

    通过这个脚本就可以看到for循环的基本结构:

    for 变量名 in 循环的条件; do
         command
    done


    这里的 “循环的条件” 可以写成一组字符串或者数字(用1个或者多个空格隔开), 也可以是一条命令的执行结果:

    [root@localhost sbin]# for i in 1 2 3 a b; do echo $i; done
    1
    2
    3
    a
    b
    

    也可以写引用系统命令的执行结果,就像那个 seq 5 但是需要用反引号括起来:

    [root@localhost sbin]# for file in `ls`; do echo $file; done
    case.sh
    first.sh
    for.sh
    if1.sh
    if2.sh
    if3.sh
    option.sh
    read.sh
    sum.sh
    variable.sh
    
    
    1. while循环
    [root@localhost sbin]# cat while.sh
    #! /bin/bash
    
    a=5
    while [ $a -ge 1 ]; do
        echo $a
        a=$[$a-1]
    done
    

    while 循环格式也很简单:

    while  条件; do
    
              command
    done
    

    上例脚本的执行结果为:

    [root@localhost sbin]# sh while.sh
    5
    4
    3
    2
    1
    

    另外你可以把循环条件拿一个冒号替代,这样可以做到死循环,常常这样写监控脚本:

    while :; do
        command
        sleep 3
    done
    shell脚本中的函数

    函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。
    有时候脚本中的某段代码总是重复使用,如果写成函数,每次用到时直接用函数名代替即可,这样就节省了时间还节省了空间




    [root@localhost sbin]# cat func.sh
    #! /bin/bash
    
    function sum()
    {
        sum=$[$1+$2]
        echo $sum
    }
    
    sum $1 $2
    

    执行结果如下:

    [root@localhost sbin]# sh func.sh 1 2
    3
    

    func.sh中的 sum() 为自定义的函数,在shell脚本函数的格式为:

    function 函数名() {
    
    command
    
    }
    

    在shell脚本中,函数一定要写在最前面,不能出现在中间或者最后,因为函数是要被调用的,如果还没有出现就被调用,肯定是会出错的























  • 相关阅读:
    分页SQL 和Oracle 存储过程
    什么是SilverLight
    opendpi 源码分析(一)
    Multiway arrays
    循环链表
    轮询算法 这是一个印度人写的,学习下。 来自 codeproject
    Friday the Thirteenth
    通过命令行指定监听的IP和端口
    pthread_key_t
    贝叶斯网络 未学习前数据结构
  • 原文地址:https://www.cnblogs.com/llx--20190411/p/15503003.html
Copyright © 2011-2022 走看看