Linux shell if条件判断2
前面介绍linux shell的if判断的语法,现在再补充一点。
分支判断结构
if , case
下面两个结构语法,已经在前面有过示例。
结构1:
if CONDITON; then
statement
statement
fi
结构2:
if CONDITON; then
statement
statement
else
statement
statement
fi
下面会分享几个我编写的示例,希望对大家有所帮助。
编写脚本,有用户输入用户名,判断用户是否存在,如果不存在,就显示用户不存在,如果存在,以下面格式输出用户相关信息:
用户名:
宿主目录:
shell程序:
[root@wei shell]# cat if2.sh
#!/bin/bash
#
read -p "请输入用户名:" name
if id $name &> /dev/null; then
echo "用户名:" $name
homedir=`grep "^$name:" /etc/passwd | awk -F: '{print $6}' `
shname=`grep "^$name:" /etc/passwd | awk -F: '{print $7}' `
echo "宿主目录:$homedir"
echo "SHELL名称:$shname "
else
echo "用户$name不存在"
fi
编写脚本,判断文件是否存在空行,有则显示空行个数,没有则显示文件类容,并在每一行显示行号
#!/bin/bash
#
read -p "请输入文件的名称:" file
if grep "^$" $file &> /dev/null; then
number=`grep "^$" $file | wc -l`
echo "文件$file中的空行的数量:$number"
else
echo "文件$file内容如下:"
cat -n $file
fi
用法3 :多分支if结构
if CONDITON; then
statement
statement
elif CONDITON; then
statement
statement
elif CONDITON; then
statement
statement
else
statement
statement
fi
多个条件的写法:
AND [conditionl -a condition2] [conditionl ] && [ condition2]
OR [conditionl -o condition2] [conditionl ] || [ condition2]
编写脚本,判断当前系统时间的小时数字
9--11 morning
12--14 noon
15--18 afternoon
night
#!/bin/bash
#
hour=`date +%H`
if [ $hour -ge 9 -a $hour -le 11 ]; then
echo "Morning"
elif [ $hour -ge 12 -a $hour -le 14 ]; then
echo " Noon"
elif [ $hour -ge 15 -a $hour -le 18 ]; then
echo " Afternoon"
else
echo "Night"
fi
执行效果:
[root@wei shell]# date
2019年 03月 19日 星期二 18:44:50 CST
[root@wei shell]# bash shi.sh
Afternoon
数学表达式
字符表达式
[ str1 == str2 ]
[ str1 != str2 ]
[ -z str1 ] 判断字符串是否为空
判断两次密码是否相同
#!/bin/bash
#
read -p "请输入密码:" pwd1
read -p "请在一次输入密码:" pwd2
if [ "$pwd1" == "$pwd2" ];then
echo "密码输入正确"
else
echo "密码两次输入不一致"
fi
文件目录表达式:
[ -e file ] 判断文件目录是否存在
[ -f file ] 判断是否为文件
[ -e file ] 判断是否为目录
[ -r file ] 判断文件是否有r权限
[ -w file ] 判断文件是否有w权限
[ -x file ] 判断文件是否有x权限
双目表达式
单目表达式 [ -e file ] [ ! -e file ]
用法4: if的内嵌语法
if CONDITON; then
if CONDITON; then
statement
statement
fi
else
statement
statement
fi
判断用户是否存在,如果用户存在,判断他的root的id和group的id是否相同
#!/bin/bsah
#
read -p "输入用户名: " name
if id $name &> /dev/null; then
#获取uid,gid进行判断
user_id=$(id -u $name)
group_id=$(id -g $name)
if [ $user_id -eq $group_id ];then
echo " Good user"
else
echo "Bad user"
fi
else
echo "用户不存在"
fi
判断文件是否存在,如果存在输入到备份的文件去
#!/bin/bash
#
read -p "输入文件的路径:" file
if [ -e $file ]; then
read -p "输入备份的路径:" dir
if [ -e $dir ]; then
cp $file $dir
echo "文件$file备份到$dir目录"
else
mkdir -p $dir
cp $file $dir
echo "文件$file备份到$dir目录"
fi
else
echo “文件$file不存在”
fi
Linux shell if条件判断2的更多相关文章
- Linux Shell编程 条件判断语法
if条件判断语句 单分支 if 条件语句 语法格式: if [条件判断式];then 程序 fi 或者 if [条件判断式] then 程序 fi 在使用单分支 if 条件查询时需要注意几点: if ...
- Linux shell case条件判断及位置变量
case语句使用于需要进行多重分支的应用情况 case分支判断结构 语法: case 变量名称 in value1) statement statemen ...
- Linux shell if条件判断1
shell 逻辑控制语句: 分支判断结构 if case 循环结构 for while unt ...
- shell中条件判断if中的-z到-d的意思
shell中条件判断if中的-z到-d的意思 [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 ...
- shell中条件判断if中的-z到-d
shell中条件判断if中的-z到-d的意思 [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真.[ -c FILE ] 如果 ...
- 我们一起来学Shell - shell的条件判断
文章目录 Shell 条件测试语法 符号说明 Shell 测试表达式 文件测试表达式 字符串测试表达式 整数操作符 逻辑操作符 测试表达式的区别总结 Shell 条件判断之if语句 单分支 IF 条件 ...
- shell中括号的特殊用法 linux if多条件判断
一. bash [ ] 单双括号 基本要素: Ø [ ] 两个符号左右都要有空格分隔 Ø 内部操作符与操作变量之间要有空格:如 [ “a” = “b” ] Ø 字符串比较中,&g ...
- (转)shell中括号的特殊用法 linux if多条件判断
一. bash [ ] 单双括号 基本要素: Ø [ ] 两个符号左右都要有空格分隔 Ø 内部操作符与操作变量之间要有空格:如 [ “a” = “b” ] Ø 字符串比较中,&g ...
- Linux学习 -- Shell编程 -- 条件判断
按照文件类型进行判断 两种格式 test -e /root/install.log [ -e /root/install.log ] 注意空格 适合用于脚本中 echo $?可以看到结果 [ - ...
随机推荐
- springboot配置spring security 静态资源不能访问
在springboot整合spring security 过程中曾遇到下面问题:(spring boot 2.0以上版本 spring security 5.x (spring secur ...
- 6-ESP8266 SDK开发基础入门篇--操作系统入门使用
了解了8266的串口了,这一节咱就自己写程序,处理一下数据,如果接收到 0xaa 0x55 0x01 就控制指示灯亮 0xaa 0x55 0x00 就控制指示灯灭 注意哈,我是用的假设没有操作系统 ...
- [LeetCode] 554. Brick Wall 砖头墙壁
There is a brick wall in front of you. The wall is rectangular and has several rows of bricks. The b ...
- 2019.11.12&13题解
写在前面: 虽然拿到了rk1,但是T3被卡常TLE90分,(考后再交就A了!?),lemon80,又丢失了一次良好的AK机会, 掐头去尾距离联赛仅剩2天,最近中午一直睡不好,可能是有些紧张, 希望自己 ...
- TINYMCE使用手册
TINYMCE使用手册 这方面的教程会陆续加进来. tinymce.get('f1').getContent();
- 一个网页从输入URL到页面加载完成的过程中都发生了什么事情?
这是一个前端的经典面试题,很多大公司面试时都会被问及,涉及的面也是非常多. 一般会经历以下几个过程: 1.首先,在浏览器地址栏中输入url 2.浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中 ...
- yarn安装node-sass失败问题
注:使用 yarn install 命令安装依赖时报错 第一步:更改镜像源 yarn config set registry https://registry.npm.taobao.org -g 第二 ...
- 安装Office 2016 出现 Office 16 Click-to-Run Extensibility Component
无法安装 64 位版本的 Office,因为在您的 PC 上找到了以下 32 位程序: Office 16 Click-to-Run Extensibility Component 请卸载所有 32 ...
- nginx产生【413 request entity too large】错误的原因与解决方法
项目上在做上传文件(清单导入)的时候产生了这个错误: 从字面上看,说的是请求的实体太大的问题,那么可以联想到是HTTP请求中的Body大小被限制了的原因. Nginx中的[client_max_bod ...
- 二、hexo+github搭建个人博客的简单使用
使用hexo+github搭建一个可以外网访问的个人博客,此文用于记录博客初级的使用方法. 新建-编写-生成-部署文章的全过程 1.使用cmd完成 打开命令提示符[win+r输入cmd] 切换到自己本 ...