参数接收
$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
文件判断
# 文件判断
-r file 用户可读为真
-w file 用户可写为真
-x file 用户可执行为真
-f file 文件为正规文件为真
-d file 文件为目录为真
-c file 文件为字符特殊文件为真
-b file 文件为块特殊文件为真
-s file 文件大小非0时为真
-t file 当文件描述符(默认为1)指定的设备为终端时为真
逻辑运算
# 逻辑比较符,写在括号内
-a 与(and)
-o 或(or)
! 非
# 例: if [ "$a" -eq 1 -o "$b" -eq 2 ] && [ "$c" -eq 3 ]; then
if条件判断语法
- 整数比较 要么使用[]和gt组合 要么使用大于号和双括号组合:
-eq 等于 如:if [ "$a" -eq "$b" ]
-ne 不等于 如:if [ "$a" -ne "$b" ]
-gt 大于 如:if [ "$a" -gt "$b" ]
-ge 大于等于 如:if [ "$a" -ge "$b" ]
-lt 小于 如:if [ "$a" -lt "$b" ]
-le 小于等于 如:if [ "$a" -le "$b" ]
> 大于(需要双括号) 如:if(("$a" > "$b"))
>= 大于等于,需要双括号 如:if(("$a" >= "$b"))
<= 小于等于,需要双括号 如:if(("$a" >= "$b"))
- 字符串比较:
= 等于,如:if [ "$a" = "$b" ]
== 等于,如:if [ "$a" == "$b" ],与=等价
复杂判断示例1:
#!/bin/bash
a=10
b=20
if [ $a -lt $b ] && [ $a -eq 11 ]
then
echo "小于20"
fi
# 结果:小于20
复杂判断示例2:
#!/bin/bash
a=0
b=0
c=5
if [ $a = 0 -a $b = 0 ] && [ $c != 0 ]; then
echo "success"
fi
# 结果:success
复杂判断示例3:
#!/bin/bash
a=0
b=0
c=5
if [ $a -eq 0 -a $b -eq 0 ] && (($c >= 5)); then
echo "success"
fi
# 结果:success