Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1852546
  • 博文数量: 317
  • 博客积分: 1557
  • 博客等级: 上尉
  • 技术积分: 1208
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-26 23:38
个人简介

如果想出发,就不要等到明天!

文章分类

全部博文(317)

文章存档

2016年(1)

2015年(41)

2014年(152)

2013年(114)

2012年(4)

2011年(1)

2009年(4)

分类: LINUX

2013-05-03 00:08:06

Abstract:
1) "if else" 执行控制;
2)数学逻辑条件比较与字符串比较;

1. " if else " 执行控制
Linux Shell 里面实现 “ if else if else ” 执行控制如下:

  1. if 条件;
  2. then
  3.     执行代码;
  4. elif 条件;
  5. then
  6.     执行代码;
  7. else
  8.     执行代码;
  9. fi
并且使用 "&&" 表示逻辑条件 “与”,使用 "||" 表示逻辑条件 “或”;

2. 条件比较:
2.1 数学逻辑条件比较:
Linux Shell 的数学比较条件必须符合如下格式:

  1. [ 条件 ]
前后方括号与条件之间都必须有空格符,不然会报错!
note:
多条件判断出了使用 "&&" "||" 之外,还可以如下表示:

  1. [ $var1 -ne 0 -a $var2 -gt 2 ] # "-a" 等效于"&&"
  2. [ $var -ne 0 -o var2 -gt 2 ] # "-o" 等效于"||"
2.1.1 常用数学逻辑条件比较运算符:

  1. [ $var -eq 0 ] #返回真如果变量为零
  2. [ $var -ne 0 ] #返回真如果变量不为零

  3. [ $var -gt 0 ] #返回真如果变量大于零
  4. [ $var -lt 0 ] #返回真如果变量小于零
  5. [ $var -ge 0 ] #返回真如果变量大于等于零
  6. [ $var -le 0 ] #返回真如果变量小于等于零
example:
  1. #!/bin/bash

  2. echo -e "\e[42;31m --- \"if else\" follow control ---\e[0m";
  3. var1=3;
  4. var2=5;
  5. if [ $var1 -eq 3 ] && [ $var2 -eq 7 ];
  6. then
  7.     echo "var=3 && var2=7";
  8. elif [ $var1 -eq 2 ] || [ $var2 -eq 7 ];
  9. then
  10.     echo "var1=2";
  11. else
  12.     echo "var1=$var1 ; var2=$var2";
  13. fi

2.1.2 常用文件系统的条件判断:

  1. [ -f $var ]#判断变量值是否为一个合法的文件路径或文件名
  2. [ -x $var ]#判断变量值是否为一个可执行文件
  3. [ -d $var ]#判断变量值是否为一个文件夹路径
  4. [ -e $var ]#判断变量值所指的文件是否存在
  5. [ -c $var ]#判断变量值所指的文件是否为字符设备文件
  6. [ -b $var ]#判断变量值所指的文件是否为块设备文件
  7. [ -w $var ]#判断变量值所指的文件是否可写
  8. [ -r $var ]#判断变量值所指的文件是否可读
  9. [ -L $var ]#判断变量值所指的文件是否为一个链接文件
example:

  1. echo -e "\e[42;31m --- filesystem related attribute test ---\e[0m";
  2. fpath="/etc/passwd"
  3. if [ -e $fpath ]; then
  4. echo File exists;
  5. else
  6. echo Does not exist;
  7. fi



2.2 字符串条件比较
Linux Shell 字符串条件比较必须符合如下格式:

  1. [[ 字符串比较条件 ]]
前后双方括号与条件之间都必须有空格符,不然会报错!

  1. [[ $str1 = $str2 ]]#判断字符串是否相等
  2. [[ $str1 == $str2 ]]#判断字符串是否相等
  3. [[ $str1 != $str2 ]]#判断字符串是否不相等
  4. [[ $str1 > $str2 ]]#判断str1是否字母序上大于str2
  5. [[ $str1 < $str2 ]]#判断str1是否字母序上小于str2
  6. [[ -z $str1 ]]#判断str1是否为空字符串
  7. [[ -n $str1 ]]#判断str1是否不为空字符串
字符串比较同样支持使用 "&&" "||" 的组合进行多条件联合判断;

  1. echo -e "\e[42;31m --- string comparison ---\e[0m";
  2. str1="Not empty "
  3. str2=""
  4. if [[ -n $str1 ]] && [[ -z $str2 ]];
  5. then
  6. echo str1 is non-empty and str2 is empty string.
  7. fi


2.3 使用 test 命令进行条件判断可以避免使用方括号:
test 命令可以替代上面提到的所有方括号表示的条件判断,并且比较的运算符都是兼容的;
使用 man test 命令自行查看 test 命令的使用详情;
example:

  1. echo -e "\e[42;31m --- using \"test\" command to substitute using square bracket ---\e[0m";
  2. var=1;
  3. if test $var -eq 0;
  4. then
  5. echo "True";
  6. else
  7. echo "False";
  8. fi



阅读(16357) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~