网站建设 个人,网站付费怎么做,wordpress的站点地址如何配置,七牛wordpress后台慢条件语句 一、条件测试1.1 测试命令1.1 文件测试1.2 整数比较1.3 字符串比较1.4 逻辑测试1.4.1 逻辑与 1.4.2 逻辑或 || 1.4.3 组合应用1.5 多个命令组合执行 ( ) { } 二、if语句2.1单分支结构2.2 多分支结构2.4 if语句练习2.4.1 单分支2.4.2 简单的交互式分数反馈 三… 条件语句 一、条件测试1.1 测试命令1.1 文件测试1.2 整数比较1.3 字符串比较1.4 逻辑测试1.4.1 逻辑与 1.4.2 逻辑或 || 1.4.3 组合应用1.5 多个命令组合执行 ( ) { } 二、if语句2.1单分支结构2.2 多分支结构2.4 if语句练习2.4.1 单分支2.4.2 简单的交互式分数反馈 三、case语句3.1 case语句结构3.2 case语句练习 四、echo命令详解 一、条件测试
1.1 测试命令
格式1test 条件表达式 格式2[ 条件表达式 ]
test命令和 [ ] 相同建议使用[ ]
#方框中要空格
#用test可能会不小心定义变量 1.1 文件测试
常见的测试操作符含义-d测试是否为目录directory-f测试是否为文件File-L测试是否为软连接文件-r测试当前用户是否有读取权限Read-w测试当前用户是否有写入权限Write-x测试当前用户是否有执行权限eXcute-e测试目录或文件是否存在Exist
属性测试-s FILE是否存在且非空-t fd文件描述符是否在某终端已经打开-N FILE文件自从上一次被读取之后是否被修改过-O FILE当前有效用户是否为文件属主-G FILE当前有效用户是否为文件属组
示例一测试文件类型
目录文件 -d 普通文件 -f 软连接文件 -L
示例二权限测试 读权限 -r 写权限 -w 执行权限 -x
1.2 整数比较
只能用于整数
#格式#
[ 整数1 操作符 整数2 ]常用操作符含义-eq第一个数等于Equal第二个数-ne第一个数不等于Not Equal第二个数-gt第一个数大于Greater Than第二个数-lt第一个数小于Lesser Than第二个数-le第一个数小于或等于Lesser or Equal第二个数-ge第一个数大于或等于Greater or Equal第二个数
示例磁盘已用率过高示警不考虑光驱
[rootbyyd test]#diskdf -h | awk {print $5} | tail -n 2 |head -n -1 | sort -rn |head -n 1| tr -d %
//仅显示磁盘已用率并将值赋予变量disk
[rootbyyd test]#[ $disk -ge 90 ] echo 磁盘快满了记得清理|| echo 能用的还有很多
//如果大于或者等于90 则示警
//如果小于90则提示不用清理1.3 字符串比较
记得加空格
#格式#
[ 字符串1 字符串2 ] #判断是否相等
[ 字符串1 字符串2 ] #判断是否不等
[ -z 字符串 ] #判断字符串内容是否为空操作符含义字符串内容相同!字符串内容不同! 号表示相反的意思-z字符串内容为空-n字符是否存在
示例
#一个简单的shell脚本
#!/bin/bash
read -p 请做出你的选择: choiceif [ $choice fff ]
then
echo a
else
echo cc
fi 1.4 逻辑测试
#格式#
[ 表达式1 ] 操作符 [ 表达式2 ]命令1 操作符 命令2操作符含义-a或逻辑与全真才为真-o逻辑或一真即为真!逻辑否
1.4.1 逻辑与
CMD1 CMD2
#同时满足命令1 和命令2 的要求 才会返回正确 输出命令2的结果全真才为真 一假即为假
第一个CMD1结果为真 第二个CMD2必须要参与运算才能得到最终的结果第一个CMD1结果为假 总的结果必定为假因此不需要执行CMD21.4.2 逻辑或 ||
CMD1 || CMD2
#命令1满足要求,直接输出命令1的结果不需要命令2参与
#如果命令1不满足要求命令2满足会输出命令2的结果一真即为真
第一个CMD1结果为真 (1)总的结果必定为1因此不需要执行CMD2
第一个CMD1结果为假 (0)第二个CMD2 必须要参与运算,才能得到最终的结果1.4.3 组合应用
用法只有一种 cmd1 cmd2 || cmd3 #短路与必须在短路或前1.5 多个命令组合执行 ( ) { }
会开启子shell{ } 不会开启子shellcmd1; cmd2; ... { cmd1; cmd2 ; cmd3 }#{}和 () 中要加空格
#多条命令要用; 隔开二、if语句
2.1单分支结构 #单分支格式#if [ 判断条件 ]
then ; echo
else
echo
fi2.2 多分支结构 #多分支#if [ 判断 ]
then
echo
elif[ ] #可以无限elif
if
...fielse #以上条件都为假
echo fi
# if 和 fi要对应2.4 if语句练习
2.4.1 单分支
#!/bin/bash# 定义一个变量
read -p 请输入你的年龄: age if [ $age -ge 18 ]
thenecho 你已经成年了
elseecho 你还未成年
fi2.4.2 简单的交互式分数反馈
vim results.sh #新建脚本文件#!/bin/bash
read -p 请输入你的输入分数(0-100): numif [ $num -ge 85 -a $num -le 100 ]
then
echo 你真厉害
elif [ $num -ge 70 -a $num -le 84 ]
then
echo 你很棒了
elif [ $num -ge 0 -a $num -lt 70 ]
then
echo 你仍需努力
else
echo 你输错了重新输bash $0fi三、case语句
3.1 case语句结构
#基本结构#
case 变量名 in值1)# 匹配值1时执行的代码块;;值2)# 匹配值2时执行的代码块;;值3)# 匹配值3时执行的代码块;;*)# 不匹配任何值时执行的代码块类似于default语句;;
esaccase支持glob风格的通配符
* 任意长度任意字符
? 任意单个字符
[0-9] 指定范围内的任意单个字符
| 或者如: a|b#可以用嵌套结构#
case 变量名 in值1)case 变量名 in值a)....;;值b....;;*)....;;esac;;值2)....;;*)....;;
esac#一个case就要有一个esac对应3.2 case语句练习
#!/bin/bash# 定义一个变量
read -p 这是什么水果: fruitcase $fruit inapple)echo 这是一个苹果;;orange)echo 这是一个橘子;;banana)echo 这是一个香蕉;;*)echo 这是其他水果;;
esac四、echo命令详解
echo命令
echo -n 表示不换行输出
echo -e 表示输出转义符
常用的转义符选项作用\r光标移至行首并且不换行\s当前shell的名称如bash\t插入Tab键制表符\n输出换行\f换行但光标仍停留在原处\表示插入\本身转义\b表示退格 不显示前一个字符\c抑制更多的输出或不换行
#自动磁盘分区#
#以/dev/sdb 为例
echo -e n\n\n\n\n\nw | fdisk /dev/sdb