zoukankan      html  css  js  c++  java
  • Linux Shell角本中的条件判断

    1、条件判断:

      if 使用:

    if condition;
    then
    commands;
    fi

      if else 使用:

    if condition;
    then
    commands;
    else if condition; then
    commands;
    else
    commands;
    fi

      说明:

    if和else语句可以进行嵌套。if的条件判断部分可能会变得很长,
    但可以用逻辑运算符将它变得简洁一些:
     [ condition ] && action; # 如果condition为真,则执行action;
     [ condition ] || action; # 如果condition为假,则执行action。
    &&是逻辑与运算符,||是逻辑或运算符。编写Bash脚本时,这是一
    个很有用的技巧。现在来了解一下条件和比较操作。

    2、算术比较

    条件通常被放置在封闭的中括号内。一定要注意在[或]与操作数之间有一个空格。如果
    忘记了这个空格,脚本就会报错。例如:
    [$var -eq 0 ] or [ $var -eq 0]
    对变量或值进行算术条件判断:
    [ $var -eq 0 ] #当 $var 等于 0 时,返回真
    [ $var -ne 0 ] #当 $var 为非 0 时,返回真
    其他重要的操作符如下所示。
     -gt:大于。
     -lt:小于。
     -ge:大于或等于。
     -le:小于或等于。
    可以按照下面的方法结合多个条件进行测试:
    [ $var1 -ne 0 -a $var2 -gt 2 ] #使用逻辑与-a
    [ $var1 -ne 0 -o var2 -gt 2 ] #逻辑或 -o

    3、文件系统相关测试

    我们可以使用不同的条件标志测试不同的文件系统相关的属性。
     [ -f $file_var ]:如果给定的变量包含正常的文件路径或文件名,则返回真。
     [ -x $var ]:如果给定的变量包含的文件可执行,则返回真。
     [ -d $var ]:如果给定的变量包含的是目录,则返回真。
     [ -e $var ]:如果给定的变量包含的文件存在,则返回真。
     [ -c $var ]:如果给定的变量包含的是一个字符设备文件的路径,则返回真。
     [ -b $var ]:如果给定的变量包含的是一个块设备文件的路径,则返回真。
     [ -w $var ]:如果给定的变量包含的文件可写,则返回真。
     [ -r $var ]:如果给定的变量包含的文件可读,则返回真。
     [ -L $var ]:如果给定的变量包含的是一个符号链接,则返回真。
    使用方法如下:
    fpath="/etc/passwd"
    if [ -e $fpath ]; then
    echo File exists;
    else
    echo Does not exist;
    fi

    4、字符串比较

    使用字符串比较时,最好用双中括号,因为有时候采用单个中括号会产生错误,所以最
    好避开它们。
    可以用下面的方法检查两个字符串,看看它们是否相同。
     [[ $str1 = $str2 ]]:当str1等于str2时,返回真。也就是说,str1和str2包含
    的文本是一模一样的。
     [[ $str1 == $str2 ]]:这是检查字符串是否相等的另一种写法。
    也可以检查两个字符串是否不同。
     [[ $str1 != $str2 ]]:如果str1和str2不相同,则返回真。
    我们还可以检查字符串的字母序情况,具体如下所示。
     [[ $str1 > $str2 ]]:如果str1的字母序比str2大,则返回真。
     [[ $str1 < $str2 ]]:如果str1的字母序比str2小,则返回真。
     [[ -z $str1 ]]:如果str1包含的是空字符串,则返回真。
     [[ -n $str1 ]]:如果str1包含的是非空字符串,则返回真。
  • 相关阅读:
    奇虎360安全牛人全球挑战赛无线部…
    Portugal 2 1 minute has Pipansihuan Germany and USA tacit or kick the ball
    求最大公约数和最小公倍数
    JQuery的Ajax跨域请求的解决方式
    从Java到C++——从union到VARIANT与CComVariant的深层剖析
    抽卡概率的測试
    jquery序列化表单以及回调函数的使用
    Notepad++插件安装和使用和打开大文件
    Android开发遇到的问题
    bzoj3068: 小白树
  • 原文地址:https://www.cnblogs.com/songxingzhu/p/5540540.html
Copyright © 2011-2022 走看看