根据《Advanced Bash-Scripting Guide》
No programming language is perfect. There is not even a single best language; there are only languages well suited or perhaps poorly suited for particular purposes. --Herbert Mayer
Shell 变量
定义变量时,变量名不加美元符号如:name="com"
注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
首个字符必须为字母(a-z,A-Z)。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用bash里的关键字(可用help命令查看保留关键字)。
root@liujie-desktop:/software/shell# expr 2 + 2
4
root@liujie-desktop:/software/shell# expr 2+2
2+2
root@liujie-desktop:/software/shell# a=10
root@liujie-desktop:/software/shell# b=20
root@liujie-desktop:/software/shell# echo `expr $a + $b`
30
算术运算1 :利用expr
#!/bin/sh
echo $0
echo $$
val=`expr 2 + 2` #运算符和表达式之间必须有空格
echo "$val"
a=10;
b=20;
v=`expr $a \* $b` #要用转义字符\*,否则语法错误
echo "v :$v"
root@liujie-desktop:/software/shell# ./stu.sh
./stu.sh
3515
4
v :200
算数运算2:利用let
((i=$j+$k)) 等价于 i=`expr $j + $k`
((i=$j-$k)) 等价于 i=`expr $j -$k`
((i=$j*$k)) 等价于 i=`expr $j \*$k`
((i=$j/$k)) 等价于 i=`expr $j /$k`
root@liujie-desktop:/software/shell# let b=1+2
root@liujie-desktop:/software/shell# echo $b
3
算术运算3 : 利用$[]
root@liujie-desktop:/software/shell# s=$[1+2]
root@liujie-desktop:/software/shell# echo $s
3
关系运算和布尔运算
[ $a -eq $b ] equal
ne : not equal
gt :greater than
lt : litter than
ge : greater equal
le : liiter equal
! 非
-o :OR
-a : and
字符串运算符
a和b是字符串
[ $a = $b ]
[ $a != $b ]
[ -z $a ] zero
[ -n $a ] not zero
[ $a ] 是否为空