shell 条件测试
1、文件相关
-e 判断文件或者文件夹是否存在
-d 判断目录是否存在
-f 判断文件是否存在
-r 判断是否有读权限
-w 判断是否有写权限
-x 判断是否有执行权限
1.1命令行使用
[root@localhost ~]# [ ! -e test/ ] && mkdir test/ #如果test/文件夹并存在,就创建。
1.2脚本中使用,一般配合条件控制语句使用。
[root@localhost script]# cat m_t.sh
#!/bin/bash
#移动脚本文件至指定文件夹
ls *.sh > sh.txt
if [ ! -d script/ ];then
mkdir script/
fi
for i in `cat sh.txt`
do
echo $i
mv $i script/
done
2、数字相关
-gt 大于
-ge 大于等于
-eq 等于
-lt 小于
-le 小于等于
-ne 不等于
2.1、小脚本,内存使用率超过80%则提醒
[root@localhost script]# cat mem.sh
#!/bin/bash
MEM_USE=`free -m|grep "^M"|awk '{print $3/$2 *100}'|cut -d . -f1`
if [ $MEM_USE -ge 80 ];then
echo -e "\e[1;5m \e[1;31m the memory used is more then 80%\e[0m \e[0m"
else
echo -e "\e[1;5m \e[1;32m the memory used is correct...\e[0m \e[0m"
fi
3、字符串相关
-z 判断字符串是否为空,为空返回 true
-n 判断字符串是否为空,非空返回 true
== 判断两个字符串是否相等 相等返回 true
!= 判断两个字符串是否相等 不相等返回true
3.1、命令行使用
[root@localhost ~]# name=
[root@localhost ~]# [ -z "$name" ];echo $?
0
[root@localhost ~]# [ -n "$name" ];echo $?
1
4、逻辑相关
-a 几个条件都成立,才为真
-o 条件只要一个为真,即为真
! 非
4.1、命令行使用
[root@localhost ~]# [ 2 -gt 1 -a -z "$name" ] && echo ok
ok
5、正则相关
格式:
[[ $name =~ 正则表达式]]
5.1、命令行使用
[root@localhost ~]# num=123
[root@localhost ~]# [[ $num =~ ^[0-9]+ ]] && echo ok
ok
添加用户脚本
#!/bin/bash
read -p "请输入用户前缀,密码,数量:" pre pass num
if [[ ! $num =~ ^[0-9]+ ]];then
ehco "请输入数字"
fi
cat <<EOF
你输入的用户名前缀为:$pre
你设立的密码为:$pass
你设定用户个数为:$num
EOF
while true
do
read -p "你确定要创建?" ch
case $ch in
y|yes)
for i in `seq $num`;do
id $pre$i &>/dev/null
if [ $? -ne 0 ];then
useradd $pre$i
echo "用户 $pre$i 创建成功..."
echo $pass|passwd --stdin $pre$i &>/dev/null
else
continue
echo "用户 $pre$i 已经存在..."
fi
done
break
;;
n|no)
exit 1
;;
*)
echo "错误输入,请重新输入..."
esac
done
shell 条件测试的更多相关文章
- shell条件测试test
shell条件测试可以通过以下两种方式: test 参数 测试内容 [ 参数 测试内容 ] 一.测试文件类型: test -e 文件名 (测试文件是否存在) [ - ...
- shell条件测试语句实例-测试apache是否开启
终于理解了shell条件测试语句"!="和"-n"的用法区别,于是有了如下的shell脚本,做为练习. 第一种方法:测试apache是否开启?字符串测试 #!/ ...
- 【第四章】Shell 条件测试表达式
shell中条件测试的三种格式: 格式1: test 条件表达式格式2: [ 条件表达式 ]格式3: [[ 条件表达式 ]] 使用test: [root@host- ~]# test -f file ...
- 四 Shell条件测试
条件测试操作 在bash的各种流程控制结构中通常要进行各种测试,然后根据测试结果执行不同的操作,有时也会通过与if等条件语句相结合,让我们可以方便的完成判断. 语法格式 test 选项 文件名或目录名 ...
- bash Shell条件测试
3种测试命令: test EXPRESSION [ EXPRESSION ] [[ EXPRESSION ]] 注意:EXPRESSION前后必须有空白字符 bash的测试类型 数值测试: -eq: ...
- shell条件测试和流程控制
一.条件测试操作 1.test 用途:测试特定的表达式是否成立,当条件成立时,命令执行后的返回值为0,否则为其他数值 格式:test 表达式 2.常见的测试类型 ①测试文件状态 格式:[ 操作符 文件 ...
- shell条件测试结构
条件测试结构 if/then结构用来判断命令列表的退出状态码是否为0(因为在UNIX惯例, 0表示"成功"), 如果成功的话, 那么就执行接下来的一个或多个命令. 有一个专有命令[ ...
- shell条件测试
文件状态测试-b filename : 当filename 存在并且是块文件时返回真(返回0)-c filename : 当filename 存在并且是字符文件时返回真-d pathname : 当p ...
- 《shell条件测试语句,字符串测试apache是否开启》
还得我想了10分钟才明白”!=“和"-n"的用法区别,做个笔记捋一捋 第一种方法:测试apache是否开启?字符串测试 #!/bin/bash web=`/usr/bin/pgre ...
- Linux Shell 条件测试
1. 文件测试 -d 目录 -s 文件非空 -f 是正规文件 -w 有写权限 -r 有读权限 -x 有执行权限 -L 符号连接 -u 文件有suid位设置
随机推荐
- css元素居中的几种方式
1.水平居中 <div style="width:200px;margin:0 auto;background-color: yellow;">水平居中</div ...
- I/O 寄存器和常规内存
不管硬件寄存器和内存之间的强相似性, 存取 I/O 寄存器的程序员必须小心避免被 CPU(或者编译器)优化所戏弄, 它可能修改希望的 I/O 行为. I/O 寄存器和 RAM 的主要不同是 I/O 操 ...
- Redis内存回收机制
为什么需要内存回收? 原因有如下两点: 在 Redis 中,Set 指令可以指定 Key 的过期时间,当过期时间到达以后,Key 就失效了. Redis 是基于内存操作的,所有的数据都是保存在内存中, ...
- vue-learning:28 - component - 组件事件的修饰符`.native / .sync`,以及组件属性`model`
组件事件的修饰符.native / .sync,以及组件属性model .native 原生事件修饰符 在一个组件中,如果我们为其绑定一个原生的点击事件@click,基本是无效的. 在vue中对组件绑 ...
- Vue+node.js实现一个简洁的个人博客系统
本项目是一个用vue和node以及mysql实现的一个简单的个人博客系统,整体逻辑比较简单.但是可以我们完整的了解一个项目从数据库到后端到前端的实现过程,适合不太懂这一块的朋友们拿来练手. 本项目所用 ...
- CodeForces 375D Tree and Queries
传送门:https://codeforces.com/problemset/problem/375/D 题意: 给你一颗有根树,树上每个节点都有其对应的颜色,有m次询问,每次问你以点v为父节点的子树内 ...
- 对“TD信息树”的使用体验
在本次同2017级学长进行的软件交流会上,我们有幸使用学长们开发的软件与成果,进过27个不尽相同的软件的使用,让我初步意识到了学习软件工程这门学科的实用价值.最终我选择了"TD信息树&quo ...
- JMeter FTP测试计划
为了演示测试目的,我们将使用公共可用的FTP位置,可以使用它来测试文件的下载. 您可以使用市场上现有的任何可用的演示FTP位置.我们使用URL下的FTP位置: https://dlptest.com/ ...
- 第二阶段:2.商业需求文档MRD:1.M版本管理
版本管理的例子.V=Version.注意大中小版本的区分.V1.2.2 第一个数字1就是大版本 中间的2就是中版本 末尾的2就是小版本.大版本就是方向的变更,比如我的用户之前主要是面向男性,现在要面向 ...
- 第二阶段:1.流程图:11.PPT绘制页面流程图
产品经理主要绘制两个图:1.业务流程图(谁在什么条件下完成什么任务)2.页面流程图(具体到产品呈现的功能设计等等细节方面) 选择插入 选择流程图中的形状 设置两个矩形 同时添加不同的背景色 添加文本框 ...