网站主机技术 在线

790Shell 运算符

[] 表达式

注意:在 [] 表达式中,常见的 >, < 需要加转义字符,表示字符串大小比较,以 acill 码位置作为比较。不直接支持 >, < 运算符,还有逻辑运算符 || 、&& ,它需要用 -a[and] –o[or] 表示。

[[ ]] 表达式

注意:[[]] 运算符只是 [] 运算符的扩充。能够支持 >, < 符号运算不需要转义符,它还是以字符串比较大小。里面支持逻辑运算符:|| && ,不再使用 -a -o

789Shell 运算符

相加补充一种方式:

a=10
b=20
c=$(($a+$b))

788Shell 运算符

推荐用 $() 代替 ``:

val=`expr 10 + 20`

val=$(expr 10 + 20)

787Shell 运算符

Shell 相加目前发现有 3 种写法:

1.

a=10
b=20
c=`expr ${a} + ${b}`
echo "$c"

2.

c=$[ `expr 10 + 20` ]
echo "$c"

3.

c=$[ 10 + 20 ]
echo "$c"

初学者推荐第一种写法,虽然看着复杂,但逻辑清晰,不易混淆。

786Shell 运算符

字符串比较是否为 null 这里:

#!/bin/bash

a=""
if [ -n $a ]
then
   echo "-n $a : 字符串长度不为 0"
else
   echo "-n $a : 字符串长度为 0"
fi

输出结果为:

-n  : 字符串长度不为 0

从结果上看 -n $a 返回 true,这并正确,正确的做法是 $a 这里应该加上双引号,否则 -n $a 的结果永远是 true:

#!/bin/bash

a=""
if [ -n "$a" ]
then
   echo "-n $a : 字符串长度不为 0"
else
   echo "-n $a : 字符串长度为 0"
fi

输出结果为:

-n  : 字符串长度为 0