变量
变量的定义
变量名称=值
= 赋值符号
a=8 正确叫法:把8赋值给变量a
值 一般是常量,比如8 就是8,不会发生变化
变量的值是可以变的,所以叫变量
变量名称组成规则
只能由数字、字母和下划线组成,不能以数字开头
尽量做到见名知意
比如:name student_num
test命令
另一种写法 [ ]
数字比较
-gt greater than 大于
-ge greater than or equal 大于等于
-lt less than 小于
-le less than or equal 小于等于
-ne not equal 不等于
-eq equal 等于
文件比较
是否存在
-e exist 判断文件是否存在
[ -e /etc/passwd ]
文件类型
-f file 判断文件是否是一个普通文件
-d directory 目录文件
-L或者-h symbolic link 符号链接文件
-b block 块设备文件
-c character 字符设备文件
-p pipe 管道文件
-s socket 套接字文件
文件权限
-r 判断文件是否有读的权限
-w 写权限
-x 执行权限
字符串比较
= 判断两个字符串是否相等
[ "hello" = "hello" ]
!= 判断连个字符串是否相等
[ "hello" != "hello" ]
-z zero 判断两个字符长度是否为0
[ -z "hello" ]
-n nonezero 判断两个字符串的长度是否为非0
[ -n "hello" ]
每个test命令的结果都是一个bool(布尔)值
布尔值:0真 1假
使用 echo $? 查看test命令布尔值
bool 运算
全真为真 有假为假
&& 与运算符号
1 && 1 假
1 && 0 假
0 && 0 真
0 && 1 假
或运算
有真为真 全假为假
|| 或运算符号
多表达式测试
写法1
[root@agent01 test]# [ -n "hello" ] && [ 5 -gt 3 ]
[root@agent01 test]# [ -n "hello" ] || [ 5 -gt 7 ]
写法2:
[ -n "hello" -a 5 -gt 3 ]
-a and
[ -n "hello" -o 5 -gt 3 ]
-o or
判断
if 命令 ;then
命令1
命令2
fi
if [ 1 -lt 3 ];then
echo hello
else
echo error
fi
输出结果为:hello
if嵌套
if .. ;then
命令
fi .. ;then
命令
fi
fi
循环
语法:
for 变量名称 in 值1 值2 值3
do
#循环体
命令1
命令2
done
for循环嵌套
#vim a.sh
for i in 1 2 3
do
for m in s1 s2
do
echo $m
done
done