24.7.19学习目录
一.循环结构
1.for循环
for每次从值集合中取一个值赋值给变量
for 变量 in 值集合
do
执行命令
done
2.while循环
while首先进行条件测试,如果传回值为0,则进入循环,否则不进入循环
while 条件测试
do
执行命令
done
3.until语句
until条件测试结果为假(即传回值不为0),则进入循环
until 条件测试
do
执行命令
done
4.循环控制
命令 | 说明 |
---|---|
break n | n表示跳出循环的次数,没有n则跳出整个循环 |
continue n | n表示退到第n层继续循环,没有n则跳过本次循环进入下次循环 |
shift | 将参数列表中的数据左移指定次数,最左端的参数删除 |
二.条件结构
1.条件测试语法
方法 | 说明 |
---|---|
test 测试表达式 | test命令与测试表达式之间至少需要一个空格 |
[ 测试表达式 ] | 中括号与测试表达式之间至少需要一个空格 |
[[ 测试表达式 ]] | 双中括号测试表达式之间至少需要一个空格,支持正则表达式,也支持通配符 |
((测试表达式)) | 不需要空格,常用于整数对比 |
2.符号说明
符号 | 说明 |
---|---|
$(()) | 整数运算 |
${} | 变量的原形,用于限定变量名称的范围,支持通配符 |
() | 子shell中执行 |
{} | 在当前shell中执行,大括号左边需要有空格,右边需要添加上 ; 符号 |
3.文件测试表达式
参数 文件 | 说明 |
---|---|
-d 文件 | 文件存在且目录则为真 |
-f | 文件存在且为普通文件则为真 |
-e | 只要文件存在则为真 |
-s | 文件存在且大小不为0则为真 |
-r | 文件存在且可读则为真 |
-w | 文件存在且可写则为真 |
-x | 文件存在且可执行则为真 |
-L | 文件存在且为链接文件则为真 |
f1 -nt f2 | 文件f1比文件f2新则为真 |
f1 -ot f2 | 文件f1比文件f2旧则为真 |
4.字符串测试表达式
字符串比较需要在字符串上添加上引号
参数 | 说明 |
---|---|
-z | 如果字符串长度为0则为真 |
-n | 如果字符串长度大于0则为真 |
sl | 如果字符串不是空字符串则为真 |
=或== | 如果两字符串相等则为真,前后需要有空格 |
!= | 如果两个字符串不相等则为真 |
> | 按字典顺序前字符串在后字符串之前,则为真 |
< | 按自定顺序前字符串在后字符串之后,则为真 |
5.整数操作符
在[]和test中使用 | 在[[]]和(())中使用 | 说明 |
---|---|---|
-eq | ==或= | 等于 |
-nq | != | 不等于 |
-gt | > | 大于 |
-ge | >= | 大于等于 |
-lt | < | 小于 |
-le | <= | 小于等于 |
6.逻辑操作符
在[]和test中使用 | 在[[]]和(())中使用 | 说明 |
---|---|---|
-a | && | 和 |
-o | || | 或 |
! | ! | 非 |
7.if语句
1.单分支if条件语句
if [ 条件表达式 ];then
执行语句
fi
2.双分支if条件语句
if [ 条件表达式 ];then
执行语句
else
条件不成立时执行
fi
3.多分支语句
if [ 条件判断1 ]
then
执行语句
elif [ 条件判断2 ]
then
执行语句
else
执行语句
fi
8.case语句
case 变量 in
值1)
执行语句
;;
值2)
执行语句
;;
*)
当变量的值不和以上匹配则执行该语句
esac