条件表达式
&&,||
如果第一个命令执行成功(返回1),与操作符&&才会执行第二个命令
如果第一个命令执行不成功就直接返回0
如果第一个命令执行失败,或操作符||才会执行第二个命令
如果第一个命令执行成功就直接返回1
文件判断
常用文件测试操作符
常用文件测试操作符 | 说明 |
-d文件,d的全拼为directory | 文件存在且为目录则为真,即测试表达式成立 |
-f文件,f的全拼为file | 文件存在且为普通文件则为真,即测试表达式成立 |
-e文件,e的全拼为exist | 文件存在则为真,即测试表达式成立。注意区别于“-f”,-e不辨别是目录还是文件 |
-r文件,r的全拼为read | 文件存在且可读则为真,即测试表达式成立 |
-s文件,s的全拼为size | 文件存在且文件大小不为0则为真,即测试表达式成立 |
-w文件,w的全拼为write | 文件存在且可写则为真,即测试表达式成立 |
-x文件,x的全拼为executable | 文件存在且可执行则为真,即测试表达式成立 |
-L文件,L的全拼为link | 文件存在且为链接文件则为真,即测试表达式成立 |
fl -nt f2,nt 的全拼为 newer than | 文件fl比文件f2新则为真,即测试表达式成立。根据文件的修改时间来计算 |
fl -ot f2,ot 的全拼为 older than | 文件fl比文件f2旧则为真,即测试表达式成立。根据文件的修改时间来计算 |
字符串判断
字符串测试操作符
常用字符串测试操作符 | 说明 |
-n "字符串" | 若字符串的长度不为0,则为真,即测试表达式成立,n可以理解为no zero |
-z "字符串" | 若字符串的长度为0,则为真,即测试表达式成立,z可以理解为zero的缩写 |
"串 1"== "串 2" | 若字符串1等于字符串2,则为真,即测试表达式成立,可使用"=="代替"=" |
"串 1" != "串 2" | 若字符串1不等于字符串2,则为真,即测试表达式成立,但不能用"!=="代替"!=" |
1.对于字符串的测试,一定要将字符串加双引号之后再进行比较。 2.空格非空 |
整数判断
在[]以及test中 使用的比较符号 | 在(())和[[]]中 使用的比较符号 | 说明 |
-eq | ==或= | 相等,全拼为equal |
-ne | != | 不相等,全拼为not equal |
-gt | > | 大于,全拼为greater than |
-ge | >= | 大于等于,全拼为greater equal |
-lt | < | 小于,全拼为less than |
-le | <= | 小于等于,全拼为less equal |
逻辑符号
常用逻辑操作符
在[]和test中使用的操作符 | 说明 | 在[[]]和中使用的操作符 | 说明 |
-a | [ 条件A -a 条件B ] A与B都要成立,整个表达式才成立 | && | and,与,两端都为真,则结果为真 |
-o | [ 条件A -o 条件B] A与B都不成立,整个表达式才不成立 | || | or,或,两端有一个为真,则结果为真 |
! | ! | not,非,两端相反,则结果为真 |
let (()) `expr `
都是对数字进行运算
lei与(()) 只能对整数不能对浮点数运算
expr:运算的表达式写入在expr 后面,保证参数与运算符号中间有空格隔开
if条件语句
单分支语句
if 条件表达式
then
Do something
fi
双分支语句
if 条件表达式
then
Do something
else
fi
多分支语句
if 条件
then
else
elif
then
else
fi
case条件结构语句
case语法结构
case "变量" in
值1)
;;
值2)
;;
*)
;;
esac
#!/bin/bash
case $1 in
1)
echo "第一季度"
;;
2)
echo "第二季度"
;;
*)
echo "其他季度"
esac
case与if的对比
case书写方式
case $name in
值1)
指令1
;;
值2)
指令2
;;
*)
指令
esac
if书写方式
if [ $name == "值1" ]
then
指令1
elif [ $name == "值2" ]
then
指令2
else
指令
fi
for循环
列表for循环(常用)
#!/bin/bash
for i in 取值列表
do
循环主体
命令done
类似C语言的风格
for((exp1;exp2;exp3))
do
指令...
done
Shell中的两种样式
while语法
声明一个变量
i=0;
while 条件
do
命令
done
until循环
until condition
do
do something...
done
跳出循环
shell中也支持break跳出循环, continue跳出本次循环.用法与C, Java中相同