结合前面的例子,来写一个条件表达式。如果第一个参数没有,则输出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.其中复杂的条件表达式如下:
- 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
|