概述
和其他编程语言一样,shell也有条件判断语法,同样是分支流程设计的基础。
if
基本语法
基本语法为:
-
单条件
if [[ 条件表达式 ]]
then
// do something
fi -
多条件
if [[ 条件表达式 ]] && [[ 条件表达式 ]]
then
// do something
fi
单 [ -a ]
if [ 条件表达式 -a 条件表达式 ]
then
// do something
fi
注意条件表达式和 [[ ]] 之间要留有空格
如果以命令执行结果为条件,则不要 [[]]
if 命令行执行
then
xxx
fi
比较运算符
数值运算符
-eq :等于
-le :小于等于
-lt :小于
-ge :大于等于
-gt : 大于
-ne : 不等于
字符串运算符
= :等于, [] [[]] 都可以;
!= 不等于, [] [[]] 都可以;
-z :长度为0
-n :长度不为0
字符串值:字符串是否存在
逻辑运算符
- []
-a :与
-o :或
!:非
- [[]]
&&
||
!
- if
num=12
if [[ ${num} -eq 12 ]]
then echo "条件判断成立"
fi
也可以写到一行
num=12;if [[ ${num} -eq 12 ]];then echo "条件判断成立";fi;
- if else
num=12
if [[ ${num} -lt 10 ]]
then echo "num 小于 10"
else echo "num 不小于 10"
fi
- if-elif
num=12
if [[ ${num} -gt 30 ]]
then echo "num 大于 30"
elif [[ ${num} -gt 20 ]]
then echo "num 大于 20"
else echo "num 小于等于 20"
fi
文件运算符
-b :是否块设备文件,磁盘文件
-d :是否为目录
-e :是否存在
-f :是否为普通文件
-h :是否为硬链接文件(文件副本,但不单独占据空间)
-L :是否为软链接文件(一个指向目标文件的链接文件)
-r :是否可读
-s : 是否不为空
-w :是否可写
-x :是否可执行
-O :是否存在并属于当前用户
-G : 是否存在并属于当前用户组
示例
通过脚本创建用户
#!/bin/bash
read -p "请输入用户名:" name
id $name &>/dev/null
if [[ $? -eq 0 ]];then
echo "用户 $name 已存在"
else
read -p "请输入密码:" pass
if [[ ${#pass} -lt 7 ]];then
echo "密码长度不能小于7..."
else
useradd $name && echo $pass | passwd ${name} --stdin
echo "用户 $name 创建成功"
fi
fi
case
基本语法
case $var in
选项1)
xxxx
;;
选项2)
xxxx
;;
*)
xxx
;;
esac
*case 开始,esac 结束,xx) 代表一个分支多个选项匹配同一个分支时使用 | 分开,;; 表示一个分支结束, ) 兜底选项 类似 switch 的default
#!/bin/bash
web1=192.168.0.104
web2=192.168.0.105
web3=192.168.0.106
while [[ true ]];do
cat <<EOF
二娃的工具箱
1:web1
2:web2
3:web3
q:退出
EOF
read -p "请输工具箱序号" ip
case $ip in
1)
ssh root@$web1
;;
2)
ssh root@$web2
;;
3)
ssh root@$eb3
;;
q)
break
;;
*)
echo "输出有误"
;;
esac
done;