目录
一.条件语句
1.test测试条件表达式
2.整数数值比较
(1)比较两个整数大小
(2)查看系统剩余内存是否低于1024M
3.逻辑测试
4.三元运算符
二.if命令
1.单分支结构
2.双分支结构
3.多分支结构
三.case语句
四.脚本
1.字符识别输入数字or字母(case
2.分数等级分类
3.测试机器是否在线(for、if
4.猜价格小游戏(while、if
5.检查文件是否存在且有执行权限(if
6.赛跑选拔并分组(if
7.解压压缩包(case
8.判断奇数偶数(if
一.条件语句
判断命令是否成功
若$?返回0则成功
若$?返回非0则出现错误
1.test测试条件表达式
格式1:test [操作符选项] 条件表达式
格式2:[ 操作符 条件表达式 ]
常见的测试操作符 | 含义 |
---|---|
-d | 测试是否为目录(directory) |
-e | 测试目录或文件是否存在(Exist) |
-f | 测试是否为文件(File) |
-r | 测试当前用户是否有权限读取(Read) |
-w | 测试当前用户是否有权限写入(Write) |
-x | 测试当前用户是否有权限执行(eXcute) |
-L | 测试是否为软连接文件 |
-nt | 判断文件A是否比文件B新 |
-ot | 判断文件A是否比文件B旧 |
-ef | 判断两个文件是否为同一文件 |
方法1:test [操作符选项] 条件表达式
方法2:[ 操作符 条件表达式 ]
2.整数数值比较
格式:
[ 整数1 操作符 整数2 ]
操作符 | 含义 |
---|---|
-eq | 等于(Equal) |
-ne | 不等于(Not Equal) |
-lt | 小于(Leser Than) |
-gt | 大于(Greater Than) |
-le | 小于或等于(Lesser or Equal) |
-ge | 大于或等于(Greater or Equal) |
(1)比较两个整数大小
(2)查看系统剩余内存是否低于1024M
3.逻辑测试
格式:
[ 表达式1 ] 操作符 [ 表达式2 ]
命令1 操作符 命令2
-a或&&:逻辑与,“而且”的意思全真才为真 |
-o或||:逻辑或,“或者”的意思一真即为真 |
!:逻辑否 |
4.三元运算符
[ 表达式 ] && a || b
当条件表达式为真时,取a值;当条件表达式为假时,取b值
二.if命令
1.单分支结构
格式:
if [ 条件判断式 ]; then#当条件判断成立时,可以进行的命令工作内容
fi #这里将if反过来写,结束if语句的意思
2.双分支结构
格式:
if 判断条件; then条件为真的分支代码else条件为假的分支代码fi
3.多分支结构
格式:
if [ 条件判断式 ]; then当条件判断成立时,可以进行的命令工作内容
elif [ 条件判断式二 ]; then当条件判断成立时,可以进行的命令工作内容
else 当上面的条件判断都不成立时,可以进行的命令工作内容
fi
三.case语句
格式:
case 变量名称 in
“第一个变量内容”程序段;;
“第二个变量内容”程序段;;
*)不包含第一个变量内容与第二个变量内容的其他程序执行段默认程序段;;
esac
四.脚本
1.字符识别输入数字or字母(case
#!/bin/bash
read -p "请在此处输入:" keycase $key in
[0-9])
echo "你输入的是 数字"
;;
[a-z]|[A-Z])
echo "你输入的是 字母"
;;
*)
echo "输入有误"
bash $0
esac
2.分数等级分类
#!/bin/bash
#积分分类
read -p "请输入积分(0-100):" JF
if [ $JF -ge 90 ];thenecho '优'
elif [ $JF -lt 90 ];thenecho '差'
fi
3.测试机器是否在线(for、if
#!/bin/bash
for i in {1..254}
do
{
ping -c2 -w2 192.168.91.$i &>/dev/null
if [ $? -eq 0 ]
then
echo host $i is online
echo "$i" >> host.txt
else
echo "host $i is offline"
fi
}&
done
wait
4.猜价格小游戏(while、if
#!/bin/bash
p=`echo $[RANDOM%1000+1]`
time=0while true
do
let time++
read -p "请输入您猜测的价格(1-1000):" h
if [ $h -eq $p ]
then
echo "恭喜您猜中了,您一共猜测了$time次"
exit
elif [ $h -gt $p ]
then
echo "您猜测的价格过高"
else
echo "您猜测的价格过低"
fi
done
5.检查文件是否存在且有执行权限(if
#!/bin/bash
#检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权
cd /roottest -f test.shif [ $? -eq 0 ];thentest -x test.shif [ $?-eq 0 ];thenecho "有test.sh文件且可执行"elseecho "有test.sh文件但不可执行"fielseecho "没有test.sh文件"
fi
6.赛跑选拔并分组(if
#!/bin/bash
#提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,
#大于10秒的都淘汰,如果输入其它字符则提示重新输入;
#进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误
read -p "请输入您100米赛跑的秒数:" sec if [ $sec -gt 0 ] && [ $sec -le 10 ];thenread -p "请输入您的性别(男|女):" sex if [ $sex = "男" ] || [ $sex = "女" ];thenif [ $sex == "男" ];thenecho "恭喜进入选拔赛男生组"elif [ $sex == "女" ];thenecho "恭喜进入选拔赛女生组"fi elseecho "输入错误,请重新输入"fi
elseecho "很遗憾,您被淘汰了"
fi
7.解压压缩包(case
#!/bin/bash
#用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录
read -p "请输入你要解压的文件:" file
case $file in
*.tar.bz2)
echo "正在解压bz2文件至opt目录中....."
tar -xvf $file -C /opt
;;*.tar.gz)
echo "正在解压gz文件至opt目录中....."
tar -xvf $file -C /opt
;;*)
echo "文件格式有误,请重新输入文件"
;;
esac
8.判断奇数偶数(if
方法一:
#!/bin/bash
read -p "请输入一个数字:" num
let i=$num+1
if [ $? -eq 0 ];thenecho "你输入的是整数"let rst=$num%2if [ $rst -eq 0 ];thenecho "你输入的是偶数"elseecho "你输入的是奇数"fi
elseecho "你输入的不是整数"
fi方法二:
#!/bin/bash
#判断输入的内容是奇数还是偶数
read -p "请输入一个数字:" num
let n=$num+1
if [ $? -eq 0 ];thenecho "你输入的是整数"if [ $[ $num % 2 ] -eq 0 ];thenecho "你输入的是偶数"elseecho "你输入的是奇数"fi
elseecho "你输入的不是整数"
fi