zoukankan      html  css  js  c++  java
  • 2020-04-10 linux循环

    1.for循环

    #!/bin/bash
    for i in 1 2 3 4
    do 
        echo $i
    done
    $ chmod +x for.sh
    $ ./for.sh
    1
    2
    3
    4

    如果要循环的内容是字母表里的连续字母或连续数字

    #!/bin/bash
    for x in {a..d}
    do
        echo $x
    done
    $ ./for.sh
    a
    b
    c
    d

    2.while循环

    #!/bin/bash
    n=1
    while [ $n -le 4 ]
    do
        echo $n
        ((n++))
    done
    $ chmod +x while.sh
    $ ./while.sh
    1
    2
    3
    4

    循环次数比较少的情况下,for 循环与 while 循环效果差不多,但如果循环次数比较多,比如 10 万次,那么 while 循环的优势就体现出来了。

    3.循环嵌套

    #!/bin/bash
    n=1
    while [ $n -lt 4 ]
    do
        for l in {a..c}
        do
            echo $n$l
        done
        ((n++))
    done
    $ chmod +x while_with_for.sh
    $ ./while_with_for.sh
    1a
    1b
    1c
    2a
    2b
    2c
    3a
    3b
    3c

    4.死循环

    #!/bin/bash
    while true
    do
        echo -n "Still running at "
        date
        sleep 1
    done

    Ctrl C 终止死循环

    5.按行读取文本内容

    #!/bin/bash
    echo -n "Enter file> "
    read file
    n=0
    while read line; 
    do ((n++)) echo "$n: $line" done < $file

    在这里,使用 read 命令将文本文件的内容读取存入 file 变量,然后再使用重定向(上述脚本最后一行)将 file 内容依次传入 while 循环处理再打印出来。

    $ chmod +x file.sh
    $ ./file.sh
    Enter file> test.txt #test.txt为同一目录下的文本文件
    1:line1
    2:I am line2:
    3:line3

    6.变量检查

    #!/bin/bash
    
    echo -n "How many times should I say hello? "
    read ans
    if [ "$ans" -eq "$ans" ]; then
        echo ok1
    fi
    if [[ $ans = *[[:digit:]]* ]]; then
        echo ok2
    fi
    if [[ "$ans" =~ ^[0-9]+$ ]]; then
        echo ok3
    fi

    第一种方法看起来似乎是个废话,但实际上,-eq 只能用于数值间判断,如果是字符串则判断不通过,所以这就保证了 ans 是个数值型变量。

    第二种方法是直接使用 Shell 的通配符对变量进行判断。

    第三种方法就更直接了,使用正则表达式对变量进行判断。

    再看一个例子:

    #!/bin/bash
    
    echo -n "How many times should I say hello? "
    read ans
    if [ "$ans" -eq "$ans" ]; then
      n=1
      while [ $n -le $ans ]
      do
        echo hello
        ((n++))
      done
    fi

    在这个脚本里,将要循环的次数传入到 ans 变量,然后脚本就具体打印几次 hello 。为了保证我们传入的内容是数字,我们使用了 if [ "$ans" -eq "$ans" ] 语句来判断。如果我们传入的不是数字,则不会进入 while 循环。

    7.其他用法

    #!/bin/bash
    
    $ echo -n "hostname"
    $ echo `hostname`
    $ chomd +x other_usage.sh
    $ ./other_usage.sh
    hostname: ubuntu

    注意:echo `hostname` 执行系统命令时需要用``而不是‘’

  • 相关阅读:
    docker-排除故障
    python的标识符
    python的数据类型
    python的数与字符串
    场景法
    正交试验法
    错误推测法
    决策表法
    因果图法
    python基础--用python执行系统命令
  • 原文地址:https://www.cnblogs.com/cxl-blog/p/12672496.html
Copyright © 2011-2022 走看看