文章目录
1. 运算符解释
1.1 算数运算符
运算符 | 解释 |
---|---|
-eq | 相等 |
-gt | 大于 |
-lt | 小于 |
-ge | 大于等于 |
-le | 小于等于 |
-ne | 不等于 |
1.2 字符串比较
字符串比较 | 解释 |
---|---|
== | 相等 |
!= | 不等于 |
-n | 字符串长度是否大于0 |
-z | 字符串长度是否等于0 |
1.3 文件比较与检查
test -e /tmp/abc
参数 | 解释 |
---|---|
-e | 检查文件是否存在 |
-d | 检查文件是否存在且为目录 |
-f | 检查文件是否存在且为文件 |
-r | 检查文件是否存在且可读 |
-s | 检查文件是否存在且不为空 |
-w | 检查文件是否存在且可写 |
-x | 检查文件是否存在且可执行 |
-O | 检查文件是否存在且被拥有 |
file1 -nt file2 | 文件1比文件2新 |
file1 -ot file2 | 文件1比文件2旧 |
2. if
判断
2.1 if
语句
if [ condition ]
then
command1
else
command2
fi
################方法1##############
if [ $1 -eq $2 ]
then
echo "NUM1 == NUM2"
else
if [ $1 -gt $2 ]
then
echo "NUM1>NUM2"
else
echo "NUM1<=NUM2"
fi
fi
################方法2##############
if [ $1 -eq $2 ]
then
echo "NUM1 == NUM2"
elif [ $1 -gt $2 ]
then
echo "NUM1>NUM2"
else
echo "NUM1<=NUM2"
fi
2.2 if
高级用法
- 双圆括号内可以写数学表达式
if (( 100%3+1>1 ));then
echo ""
else
echo ""
fi
- 双方括号可以做字符串匹配
3. for循环
3.1 for语法
## type1
for i in 1 2 3 4 5 6 7 8 9
do
echo $i
sleep 1
done
## type2
for (( a=0;a<9;++a ))
do
echo $a
sleep 1
done
3.2 样例1-判断IP节点有效
#ping -c1 表示只发送一个icmp包
for ((;;))
do
ping -c1 $1 &>/dev/null
if [ $? -eq 0]
then
echo "`date +"%F %H:%M:S"`: $1 is up"
else
echo "`date +"%F %H:%M:S"`: $1 is down"
fi
sleep 10
done
4. continue和break
for(( i=1;i<9;i++ ))
do
if [ $i -eq 5];then
continue
fi
if [ $i -eq 8];then
break
fi
echo "$i"
done
4.1 break跳出外循环
for (( i=1;i<100;++i ))
do
for(( j=1;j<10;++j ))
break 2
done
done
4.2 扫描网段哪些是活的
5. while循环控制
#while [ cond ]
# do
# command
#done
read -p "login: " account
while [$account == "admin"] || [ $account == "root" ]
do
read -p "login: " account
done
6. until语句
和while正好相反,条件为假开始执行,类似于do while
语法:
until [ cond ]
do
command
done
7. case语句
语法:
read -p "NUM: "num
case $num in
1)
echo "hh"
;;
2)
echo "hehe"
;;
3)
echo "gg"
;;
*)
echo "bye"
;;
esac
case $1 in
zmn|ZMN)
echo "bmh"
;;
lzr|LZR)
echo "lzrh"
;;
*)
echo "nh"
;;
esac