Shell编程中if的语法和常见判断用法

来源:互联网 发布:自然语言分析工具java 编辑:程序博客网 时间:2024/05/20 15:37

The if...elif...fi statement is the one level advance form of control statement that allows Shell to make correct decision out of several conditions.

Syntax:

if [ expression 1 ]then   Statement(s) to be executed if expression 1 is trueelif [ expression 2 ]then   Statement(s) to be executed if expression 2 is trueelif [ expression 3 ]then   Statement(s) to be executed if expression 3 is trueelse   Statement(s) to be executed if no expression is truefi

There is nothing special about this code. It is just a series of if statements, where each if is part of theelse clause of the previous statement. Here statement(s) are executed based on the true condition, if non of the condition is true then else block is executed.

Example:

#!/bin/sha=10b=20if [ $a == $b ]then   echo "a is equal to b"elif [ $a -gt $b ]then   echo "a is greater than b"elif [ $a -lt $b ]then   echo "a is less than b"else   echo "None of the condition met"fi

This will produce following result:

a is less than b

if, for, while几乎是所有编程语言的关键字,在Shell编程中也不例外,其中if是使用频率最高的,由于Shell编程中不存在对象(Object)的概念,因此在if的比较判断中主要是对字符串、数字的值进行比较判断的:

一. if的基本语法
1. if与[之间要有空格
2. []与判断条件之间也必须有空格
3. ]与;之间不能有空格

二. 对字符串的判断
1. if [ str1=str2 ];then fi #当两个字符串相同时返回真
2. if [ str1!=str2 ];then fi #当两个字符串不相等时返回真
3. if [ -n str1 ];then fi #当字符串的长度大于0时返回真 (判断变量是否有值)
4. if [ -z str1 ];then fi #当字符串的长度为0时返回真

三. 对数字的判断
1. int1 -eq int2 #int1和int2相等
2. int1 -ne int2 #int1不相等int2
3. int1 -gt int2 #int1大于int2
4. int1 -ge int2 #int1大于等于int2
5. int1 -lt int2 #int1小于int2
6. int1 -le int2 #int1小于等于int2

四. 对文件属性的判断
1. -r file #用户可读为真
2. -w file #用户可写为真
3. -x file #用户可执行为真
4. -f file #文件存在且为正规文件为真
5. -d file #如果是存在目录为真
6. -c file #文件存在且为字符设备文件
7. -b file #文件存在且为块设备文件
8. -s file #文件大小为非0为真,可以判断文件是否为空
9. -e file #如果文件存在为真

五. 逻辑判断
1. -a #与
2. -o #或
3. ! #非



原创粉丝点击