zoukankan      html  css  js  c++  java
  • linux shell控制语句

    控制语句

    常用的列出以下三种。小写的字符串表示控制命令,大写的表示其他意义。
    1. if TEST then COMMANDS elif TEST then COMMANDS fi
    2. for VAR in LIST do COMMANDS done
    3. while TEST do COMMANDS done

    COMMANDS,指命令的集合;VAR,指的是变量;TEST是测试语句,有几种形式:

    View Code
     1 [ -a FILE ]           如果 FILE 存在则为真。  
    2 [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真。
    3 [ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真。
    4 [ -d FILE ] 如果 FILE 存在且是一个目录则为真。
    5 [ -e FILE ] 如果 FILE 存在则为真。
    6 [ -f FILE ] 如果 FILE 存在且是一个普通文件则为真。
    7 [ -g FILE ] 如果 FILE 存在且已经设置了SGID则为真。
    8 [ -h FILE ] 如果 FILE 存在且是一个符号连接则为真。
    9 [ -k FILE ] 如果 FILE 存在且已经设置了粘制位则为真。
    10 [ -p FILE ] 如果 FILE 存在且是一个名字管道(F如果O)则为真。
    11 [ -r FILE ] 如果 FILE 存在且是可读的则为真。
    12 [ -s FILE ] 如果 FILE 存在且大小不为0则为真。
    13 [ -t FD ] 如果 文件描述符 FD 打开且指向一个终端则为真。
    14 [ -u FILE ] 如果 FILE 存在且设置了SUID (set user ID)则为真。
    15 [ -w FILE ] 如果 FILE 如果 FILE 存在且是可写的则为真。
    16 [ -x FILE ] 如果 FILE 存在且是可执行的则为真。
    17 [ -O FILE ] 如果 FILE 存在且属有效用户ID则为真。
    18 [ -G FILE ] 如果 FILE 存在且属有效用户组则为真。
    19 [ -L FILE ] 如果 FILE 存在且是一个符号连接则为真。
    20 [ -N FILE ] 如果 FILE 存在 and has been mod如果ied since it was last read则为真。
    21 [ -S FILE ] 如果 FILE 存在且是一个套接字则为真。
    22 [ FILE1 -nt FILE2 ] 如果 FILE1 has been changed more recently than FILE2, or 如果 FILE1FILE2 does not则为真。 exists and
    23 [ FILE1 -ot FILE2 ] 如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在则为真。
    24 [ FILE1 -ef FILE2 ] 如果 FILE1 和 FILE2 指向相同的设备和节点号则为真。
    25 [ -o OPTIONNAME ] 如果 shell选项 “OPTIONNAME” 开启则为真。
    26 [ -z STRING ] STRING的长度为零则为真。
    27 [ -n STRING ] or [ STRING ] STRING的长度为非零 non-zero则为真。
    28 [ STRING1 == STRING2 ] 如果2个字符串相同。 = may be used instead of == for strict POSIX compliance则为真。
    29 [ STRING1 != STRING2 ] 如果字符串不相等则为真。
    30 [ STRING1 < STRING2 ] 如果 STRING1 sorts before STRING2 lexicographically in the current locale则为真。
    31 [ STRING1 > STRING2 ] 如果 STRING1 sorts after STRING2 lexicographically in the current locale则为真。
    32 [ ARG1 OP ARG2 ] OP is one of -eq, -ne, -lt, -le, -gt or -ge.
    33
    34 [ ! EXPR ] 如果 EXPR 是false则为真。
    35 [ ( EXPR ) ] 返回 EXPR的值。这样可以用来忽略正常的操作符优先级。
    36 [ EXPR1 -a EXPR2 ] 如果 EXPR1 and EXPR2 全真则为真。
    37 [ EXPR1 -o EXPR2 ] 如果 EXPR1 或者 EXPR2 为真则为真。
    38
    39 TEST也可以是有返回的命令。例如
    40 if "hello world" | grep hello > /dev/null ; then echo "hello is here" ; fi

    4. if举例:

     if [ $count -lt $times ]
     then
         count=`expr $count + 1`
         echo $count
     fi
    

    5. for举例:

    for loop in `ls`
     do
         echo $loop
     done

    6. while举例:

     while [ $count -lt $times ]
     do
         count=`expr $count + 1`
         echo $count
     done
    

    注意事项
    1. 有些空格要小心,例如 if [ "$str" = "abc" ] 中,[ 和 ] 前后的空格不能去掉。
    2. 变量的表达式,shell默认是按字符串进行的。所以:
       a = 1
       a = $a+1
       那么a就变成了字符串"1+1",而不是2。要是他按数学运行,要使用expr命令。
       a = 1
       a = `expr $a + 1`
       注意,此处+好前后的空格也不能去掉,否则"$a+"会被看出一个整体,所有解析会出错。

  • 相关阅读:
    Lambda表达式详解 (转)
    usb驱动开发21之驱动生命线
    usb驱动开发18之设备生命线
    usb驱动开发17之设备生命线
    usb驱动开发16之设备生命线
    usb驱动开发15之设备生命线
    usb驱动开发14之设备生命线
    usb驱动开发13之设备生命线
    usb驱动开发12之设备生命线
    usb驱动开发11之设备生命线
  • 原文地址:https://www.cnblogs.com/linxr/p/2064209.html
Copyright © 2011-2022 走看看