结合前面的例子,来写一个条件表达式。如果第一个参数没有,则输出no parameter,否则输出第一个参数。
#!/bin/bash
if [ -n "$1" ]
then
echo "1st parameter: $1"
else
echo "no parameter"
fi
输入带参数命令:
$ ./test.sh 'this is a test'
1st parameter: this is a test
输入无参数命令:
$ ./test.sh
no parameter
if [ ... ]
then
...
else
...
fi
...表示可以编写语句的地方。
必须要用fi结束整个条件语句。
注意[ ... ] 方括号要用空格和其他字符分开。
-n 是一个操作符,判断后面的参数是否长度为0,如果不为0,返回true,为0则返回false.
这篇文档介绍的还是不错的,可以参考:
http://v.youku.com/v_show/id_XNDQ5ODE3MDQw.html
其中复杂的条件表达式如下:
if condition1
then
statement1
statement2
..........
elif condition2
then
statement3
statement4
........
elif condition3
then
statement5
statement6
........
fi
-n 之外,还有其他运算符可供使用:
operator | produces true if... | number of operands |
-n | operand non zero length | 1 |
-z | operand has zero length | 1 |
-d | there exists a directory whose name is operand | 1 |
-f | there exists a file whose name is operand | 1 |
-eq | the operands are integers and they are equal | 2 |
-neq | the opposite of -eq | 2 |
= | the operands are equal (as strings) | 2 |
!= | opposite of = | 2 |
-lt | operand1 is strictly less than operand2 (both operands should be integers) | 2 |
-gt | operand1 is strictly greater than operand2 (both operands should be integers) | 2 |
-ge | operand1 is greater than or equal to operand2 (both operands should be integers) | 2 |
-le | operand1 is less than or equal to operand2 (both operands should be integers) | 2 |
双操作数操作符用法如下:
$r -eq 1