第二种写法 $ []
第三种写法 expr
注意:在expr表达式中,必须添加空格
如果:expr3+5 则报错
如果:expr 3+5 则直接输出3+5
注意:因为expr本身是一个shell命令,所以在输出的时候需要使用反引号(~,1,2,键的左边)
注:expr 表达式只能接受数值
1.算术运算
echo $((a+b))
echo $(($a*$b))
2.逻辑运算
-》 && 逻辑与 (命令控制符)
cmd1 && cmd2 //前面的命令执行成功才会执行后面的命令
-》 || 逻辑或
cmd1 || cmd2 //前面的命令执行失败才会执行后面的命令
-》 ;无逻辑符号
cmd1 ; cmd2
内置测试判断
分两种:
第一种:test 测试表达式
if test 6 -gt 9
then
echo bigger
fi
第二种:[测试表达式]
a=6
b=9
if [ $a -lt $b ]
then
echo smaller
fi
->第一种比较:数值比较
-eq #equal等于
-ne #not equal不等于
-gt #greater than 大于
-ge #greater equal大于等于
-lt #little than小于
-le #little equal小于等于
注意:在数值的比较中,不能使用”>“ "<"等符号来进行比较
在test 或 [] 进行测试的时候,必须要有空格
可以用逻辑操作符将两个测试表达式结合起来。仅需要用到一对方括号,而不能用两个, 否则将返回错误信息“too many arguments”。
$ [ "990" -le "995" ] -a [ "123" -gt "33" ]
-bash: [: too many arguments
第二种比较:字符串的比较
分为5种比较方式
= 等于
!= 不等于
-z 长度为0则为true(返回0) 不为0为false(返回非0)
-n 长度不为0则为true
$string 字符串不为空则为true(返回0)
第三种:文件的测试或比较
-d (directory)如果是目录则为true
-f (file)如果是文件则为true
-r 如果是可读则为true
-w 如果是可写则为true
-x 如果是可执行则为true
注意:可读可写可执行是针对于执行脚本的用户而言的权限
总结:
shell 编程规范:头 # 执行(两种)
shell 变量:
1.环境变量(用户变量和全局变量)
2.位置变量($1---$9)->相当于形式参数 一个脚本可以认为是java中一个方法
3.预定义变量:($0 $$ $* #@ $?)
4.自定义变量:
直接赋值
间接
把命令传给变量
*取变量值
运算表达式:$(())
$[]
expr
1.算术运算 + - \* /
2. 命令控制符 && || ;
测试表达式:
test
[ ]
1.数值关系: eq ne lt
2.字符串测试: = != -n -z
3.文件测试: -d -f -r -w -x