zoukankan      html  css  js  c++  java
  • shell中的循环及条件判断

     

    for循环的一般格式如下:

    复制代码
     1 #!/bin/sh
     2 
     3 for 变量 in 列表
     4 do
     5     command 1
     6     command 2
     7     command 1
     8     .........
     9     command n
    10 done
    复制代码

    列表是一组值(数字、字符串等)组成的序列,每个值通过空格分隔。每循环一次,就将列表中的下一个值赋给变量。
    列表也可以是一个文件:
    in 列表是可选的,如果不用它,for 循环使用命令行的位置参数。

    复制代码
    1 #!/bin/sh
    2 
    3 for line in 1 2 3 4 5 6 7
    4 do
    5     echo "line is $line"
    6 done
    复制代码

    结果:

    [root@localhost 1st]# sh test.sh
    line is 1
    line is 2
    line is 3
    line is 4
    line is 5
    line is 6
    line is 7

    下面用for循环读一个文件:

    查看文件内容

    复制代码
    1 [root@localhost 1st]# cat test.txt 
    2 hello
    3 wolrd
    4 hello 
    5 shell
    6 [root@localhost 1st]#
    复制代码

    code:

    复制代码
    1 #!/bin/sh
    2 
    3 FILE=./test.txt
    4 
    5 for line in $(<$FILE)
    6 do
    7     echo "line is: $line"
    8 done
    复制代码

    Results:

    复制代码
    1 [root@localhost 1st]# sh xx.sh  
    2 line is: hello
    3 line is: wolrd
    4 line is: hello
    5 line is: shell
    6 [root@localhost 1st]# 
    复制代码

    while循环的一般格式如下:

    复制代码
    1 while command
    2 do
    3 
    4    statement
    5 
    6 done
    复制代码

    code:

    复制代码
     1 #!/bin/sh
     2 
     3 i=0
     4 sum=0
     5 while [ $i -le 100 ]
     6 do 
     7    sum=$(($sum + $i))
     8     i=$(($i + 1))
     9 done
    10 echo "sum is $sum"
    复制代码
    rusults:
    1 [root@localhost 1st]# sh xx.sh 
    2 sum is 5050
    3 [root@localhost 1st]#

    if语句的一般格式如下:

    复制代码
    1 if ....; then
    2 ....
    3 elif ....; then
    4 ....
    5 else
    6 ....
    7 fi
    复制代码

    if 条件语句:

    文件表达式:

    复制代码
     1 [ -f "somefile" ] :  判断是否是一个文件 
     2 [ -x "/bin/ls" ] :    判断/bin/ls是否存在并有可执行权限 
     3 [ -n "$var" ] :    判断$var变量是否有值 
     4 [ "$a" = "$b" ] :     判断$a和$b是否相等
     5   -r file       用户可读为真 
     6  -w file       用户可写为真 
     7  -x file       用户可执行为真 
     8  -f file       文件为正规文件为真 
     9  -d file       文件为目录为真 
    10  -c file       文件为字符特殊文件为真 
    11  -b file       文件为块特殊文件为真 
    12  -s file       文件大小非0时为真 
    13  -t file       当文件描述符(默认为1)指定的设备为终端时为真
    复制代码
    更短的if语句
    # 一行
    # Note: 当第一段是正确时执行第三段
    # Note: 此处利用了逻辑运算符的短路规则
    [[ $var == hello ]] && echo hi || echo bye
    [[ $var == hello ]] && { echo hi; echo there; } || echo bye

    字符串表达式:

    [string string_operator string]

    这里string_operator可为如下几种:

    1 =     两个字符串相等。
    2 !=    两个字符串不等。
    3 -z    空串。
    4 -n    非空串

    eg:

    复制代码
    1  #!/bin/sh
    2  
    3  NUMS="hello"
    4  [ $NUMS = "hello" ]
    5  
    6  echo $?
    复制代码

    results:

    1 [root@localhost 1st]# sh xx.sh  
    2 0

     整数表达式:

    复制代码
    1 -eq   数值相等。
    2 -ne   数值不相等。
    3 -gt    第一个数大于第二个数。
    4 -lt   第一个数小于第二个数。
    5 -le   第一个数小于等于第二个数。
    6 -ge   第一个数大于等于第二个数。
    复制代码

     Eg:

    复制代码
    1 #!/bin/sh
    2 
    3 NUMS=130
    4 if [ $NUMS -eq "130" ]; then
    5 
    6     echo "equal"
    7 else
    8     echo "not equal"
    9 fi
    复制代码

    results:

    1 [root@localhost 1st]# sh xx.sh 
    2 equal
  • 相关阅读:
    OPPO R9sPlus MIFlash线刷TWRP Recovery ROOT详细教程
    OPPO R11 R11plus系列 解锁BootLoader ROOT Xposed 你的手机你做主
    努比亚(nubia) M2青春版 NX573J 解锁BootLoader 并进入临时recovery ROOT
    华为 荣耀 等手机解锁BootLoader
    青橙 M4 解锁BootLoader 并刷入recovery ROOT
    程序员修炼之道阅读笔03
    冲刺8
    典型用户模板分析
    学习进度八
    冲刺7
  • 原文地址:https://www.cnblogs.com/xiaoyuxixi/p/15483597.html
Copyright © 2011-2022 走看看