1、条件判断
1.条件判断语法格式
格式1: test 条件表达式
格式2: [ 条件表达式 ] 前后都有空格
格式3: [[ 条件表达式 ]]
2.条件判断相关参数
2.1 判断文件类型
判断参数 含义
-e 判断文件是否存在
-f 判断文件是否存在并且是个普通文件
-d 判断文件是否存在并且是个目录
-s 判断文件是否存在并且是一个非空文件
-L 判断文件是否存在并且是一个软连接文件
-b 判断文件是否存在并且是一个设备文件
-S 判断文件是否存在并且是一个套接字文件
-c 判断文件是否存在并且是一个字符设备文件
-p 判断文件是否存在并且是一个命名管道文件
2.2 判断文件权限
判断参数 含义
-r 当前用户对其是否可读
-w 当前用户对其是否可写
-x 当前用户对其是否可执行
-u 是否有suid,高级权限冒险位
-g 是否有sgid,高级权限强制位
2.3 判读文件新旧
文件1 -nt 文件2 比较文件1是否比文件2新
文件1 -ot 文件2 比较文件1是否比文件2旧
文件1 -ef 文件2 比较是否位同一文件。
2.4 判断整数
-eq 相等
-ne 不等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
2.5 判断字符串
-z 判断是否为空字符串,字符串长度为0则成立
-n 判断是否为非空字符串,字符串长度不为0则成立
string1 = string2 判断字符串是否相等 (注意空格)
string1 != string2 判断字符串是否不等(注意空格)
2.6 多重条件判断
-a和&& 逻辑与
-o和|| 逻辑或
类C风格的数值比较
= 表示赋值;==表示判断
[root@Hadoop01 myshell]# ((1==1));echo $?
0
[root@Hadoop01 myshell]# ((1!=1));echo $?
1
[root@Hadoop01 myshell]# ((1<=1));echo $?
0
[root@Hadoop01 myshell]# ((1>=1));echo $?
0
[root@Hadoop01 myshell]# ((a=123));echo $a
123
if语句
语法一:
if 条件
then
命令1
命令2
fi
单行写法:(一般用在命令行)
if [条件];then 命令; fi
语法二:
if 条件
then
命令1
命令2
else
命令
fi
语法三:
if 条件1
then
命令1
elif 条件2
then
命令2
else
命令
fi
case 语句
语法结构:
case 变量 in
1)
命令1
;;
2)
命令2
;;
3)
命令3
;;
...
*)
默认命令
;;
esac
for循环语句
1.列表循环
for 变量 in {list}
do
命令
done
2.不带列表循环
for 变量
do
命令
done
3.类C风格的for循环
for((表达式1;表达式2;表达式3))
do
命令
done
while循环
循环语句:
while 表达式
do
命令
done
until循环
特点:条件为假进入循环,条件为真的时候退出循环
until 表达式
do
命令
done
循环控制语句
continue 继续:continue下面的代码不再执行,重头开始。
break 打断:跳出循环
exit 直接退出程序