zoukankan      html  css  js  c++  java
  • shell if判断的种类

    if [ $# != 1 ] ; then
    echo "USAGE: $0 TABNAME"
    echo " e.g.: $0 CDR_CALL_20040701"
    exit 1;
    fi

    位置参数 $1, $2,..., $N,$#代表了命令行的参数数量, $0代表了脚本的名字
    -ne    不等于

    -----------------------
    shell 编程中使用到得if语句内判断参数

    –b 当file存在并且是块文件时返回真

    -c 当file存在并且是字符文件时返回真

    -d 当pathname存在并且是一个目录时返回真

    -e 当pathname指定的文件或目录存在时返回真

    -f 当file存在并且是正规文件时返回真

    -g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真

    -h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效

    -k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真

    -p 当file存在并且是命令管道时返回为真

    -r 当由pathname指定的文件或目录存在并且可读时返回为真

    -s 当file存在文件大小大于0时返回真

    -u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真

    -w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。

    -o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。

    UNIX Shell 里面比较字符写法:

    -eq   等于

    -ne    不等于

    -gt    大于

    -lt    小于

    -le    小于等于

    -ge   大于等于

    -z    空串

    =    两个字符相等

    !=    两个字符不等

    -n    非空串

    -------------------------------------------------------------------------

    更为详细的说明:

    运算符                     描述                          示例

    文件比较运算符

    -e filename     如果 filename 存在,则为真            [ -e /var/log/syslog ]

    -d filename     如果 filename 为目录,则为真          [ -d /tmp/mydir ]

    -f filename     如果 filename 为常规文件,则为真      [ -f /usr/bin/grep ]

    -L filename     如果 filename 为符号链接,则为真      [ -L /usr/bin/grep ]

    -r filename     如果 filename 可读,则为真            [ -r /var/log/syslog ]

    -w filename     如果 filename 可写,则为真            [ -w /var/mytmp.txt ]

    -x filename     如果 filename 可执行,则为真          [ -L /usr/bin/grep ]

    filename1 -nt filename2 如果 filename1 比 filename2 新,则为真 [ /tmp/install/etc/services -nt /etc/services ]

    filename1 -ot filename2   如果 filename1 比 filename2 旧,则为真  [ /boot/bzImage -ot arch/i386/boot/bzImage ]

    字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)
    -z string               如果 string 长度为零,则为真               [ -z $myvar ]

    -n string                      如果 string 长度非零,则为真        [ -n $myvar ]

    string1 = string2         如果 string1 与 string2 相同,则为真     [ $myvar = one two three ]

    string1 != string2        如果 string1 与 string2 不同,则为真     [ $myvar != one two three ]

    算术比较运算符

    num1 -eq num2              等于         [ 3 -eq $mynum ]

    num1 -ne num2              不等于       [ 3 -ne $mynum ]

    num1 -lt num2               小于        [ 3 -lt $mynum ]

    num1 -le num2            小于或等于     [ 3 -le $mynum ]

    num1 -gt num2             大于          [ 3 -gt $mynum ]

    num1 -ge num2             大于或等于    [ 3 -ge $mynum ]

    脚本示例:

    #!/bin/bash

    # This script prints a message about your weight if you give it your

    # weight in kilos and hight in centimeters.

    if [ ! $# == 2 ]; then

    echo "Usage: $0 weight_in_kilos length_in_centimeters"

    exit

    fi

    weight="$1"

    height="$2"

    idealweight=$[$height - 110]

    if [ $weight -le $idealweight ] ; then

    echo "You should eat a bit more fat."

    else

    echo "You should eat a bit more fruit."

    fi

    # weight.sh 70 150

    You should eat a bit more fruit.

    # weight.sh 70 150 33

    Usage: ./weight.sh weight_in_kilos length_in_centimeters

    位置参数 $1, $2,..., $N,$#代表了命令行的参数数量, $0代表了脚本的名字,

    第一个参数代表$1,第二个参数代表$2,以此类推,参数数量的总数存在$#中,上面的例子显示了怎么改变脚本,如果参数少于或者多余2个来打印出一条消息。

    执行,并查看情况。

    # bash -x tijian.sh 60 170

    + weight=60

    + height=170

    + idealweight=60

    + '[' 60 -le 60 ']'

    + echo 'You should eat a bit more fat.'

    You should eat a bit more fat.

    其中-x用来检查脚本的执行情况。

    转载:http://wangqiaowqo.iteye.com/blog/1312511

  • 相关阅读:
    prototype.js超强的javascript类库
    MySQL Server Architecture
    Know more about RBA redo block address
    MySQL无处不在
    利用Oracle Enterprise Manager Cloud Control 12c创建DataGuard Standby
    LAMP Stack
    9i中DG remote archive可能导致Primary Database挂起
    Oracle数据库升级与补丁
    Oracle为何会发生归档日志archivelog大小远小于联机重做日志online redo log size的情况?
    Oracle Ksplice如何工作?How does Ksplice work?
  • 原文地址:https://www.cnblogs.com/xiaoma123/p/5148823.html
Copyright © 2011-2022 走看看