继续运算符模块。
part1 算术运算符
+
-
*
/
%

part2 关系操作
与(())连用
<
>
<=
>=
==
!=
&&
||
 
   
注意:一个等号是赋值操作,两个等号是判断
test命令相关,[]可以达到一样的效果

part3 赋值运算符
=
+=
*=
/=
%=

part4 shell里的所有计算器
 $[] (()) $(()) expr bc bc -l
浮点运算:yum install bc -y

part5 测试操作
 命令执行后会返回到一个系统变量中 $?
 如果$?值为0 表示命令执行成功 否则为失败
 测试命令 test [ ] [[ ]] (( ))
 打开man test 逐一介绍每个参数





part5-1、测试文件状态
 -d 目录
 -s 文件长度 > 0、非空
 -f 正规文件
 -w 可写
-r 可读
-x 可执行
-L 符号连接
-u 文件有 suid 位设置
part5-2、字符串测试
 = 两个字符串相等
 != 两个字符串不相等
 -z 空串
 -n 非空串

part5-3、测试数值
 -eq 等于
 -ne 不等于
 -gt 大于
 -lt 小于
 -ge 大于等于
 -le 小于等于

part5-4、拓展测试符号 [[ ]] (())
数字测试符号
 # [ 10 < 2 ] # 语法错误
 -bash: 2: 没有那个文件或目录
 # 
 # [[ 2 > 10 ]] # 结果错误
 # echo $?
 0
 # [[ 20 > 10 ]] # 正确
 # echo $?
 0
 # (( 10 < 20 ))
 # echo $?
 0
 字符测试
 # [ "aa" = "aa" ]
 # echo $?
 0
 # [[ "aa" = "aa" ]]
 # echo $?
 0
 # (( "aa" = "aa" )) #结果错误
 # echo $?
 1
 混合测试
 # [ a = a -a 10 < 20 ]
 -bash: 20: 没有那个文件或目录
 [root@seker ~]# [[ a = a -a 10 < 20 ]]
 -bash: syntax error in conditional expression
 -bash: syntax error near `-a'
 [root@seker ~]# [[ a = a && 10 < 20 ]]
 [root@seker ~]# echo $?
 0
 [root@seker ~]# [[ a = a || 10 < 20 ]]
 [root@seker ~]# echo $?
 0
 [root@seker ~]# (( a = a || 10 < 20 ))
 [root@seker ~]# echo $?
 0
 [root@seker ~]# (( a = a && 10 < 20 ))
 [root@seker ~]# echo $?
 0
 [root@seker ~]# 
结论: 
 比较数字,使用(( ))
 其他测试使用 [[ ]]
包含数字比较的混合测试,使用[[ expr1 && expr2 ]] (( expr1 || expr2 ))
两个文件的比较
 FILE1 -ef FILE2
 测试两个文件是否是相同的inode
 有时为了找到同一个INODE号的文件 更倾向于使用 find 命令的 -inum 或 --samefile
 FILE1 -nt FILE2
 FILE1 is newer (modification date) than FILE2
 FILE1 -ot FILE2
 FILE1 is older than FILE2
四 流程控制
part1分支结构

if 测试中还可以执行命令 根据命令的返回值做判断
 # if cd / ;then echo Y ;fi
 # if grep -q root /etc/passwd ;then echo Y ;fi




part2 循环结构
part2-1 while循环
while (条件)
 do
 动作
 done
需要无限循环时我们会选择while :



练习:
 1.while死循环

2.wihle和read实现逐行处理

part2-2 for循环
shell格式的for
for i in {1..10} do echo $i done
shell的for,常用in列表方式
小例子:
检查内网存活的IP
   
  
多个for嵌套
 嵌套for中使用
continue:默认退出本次循环
break:默认退出本层循环

其他
可视块:Ctrl+v shift +a/i/o 输入内容,比如空格,然后esc,优化视觉效果