shell文件类型和流程控制
2018-09-11 21:05
162 查看
我们下来看一些shell特有的:
按照文件类型来判断
-d 文件 判断该文件是否存在,并且是否是目录 -e 文件 判断该文件是否存在 -f 文件 判断该文件是否存在,并且是否为普通文件
# 查看该文件是否存在 [ -e /root/install.log ] # 查看上一条命令执行是否成功 echo $? # 或者,当-e命令正确执行,就不会执行yes, 当yes不执行,就会执行no [ -e /root/install.log ] && echo yes || echo no
两个文件之间进行比较
文件1 -nt文件2 判断文件1的修改时间是否比文件2的新 文件1 -ot文件2 判断文件1的修改时间是否比文件2的旧 文件1 -ef文件2 判断这两个文件是否为同一个文件,用于判断硬链接
两个整数之间判断
整数1 -eq 整数2 判断整数1是否和整数2相等 整数1 -ne 整数2 判断整数1是否和整数2不相等 整数1 -gt 整数2 判断整数1是否大于整数2 整数1 -lt 整数2 判断整数1是否小于整数2 整数1 -ge 整数2 判断整数1是否大于等于整数2 整数1 -le 整数2 判断整数1是否小于等于整数2
字符串的判断
-z 字符串 ---- 判断字符串是否为空 -n 字符串 ---- 判断字符串是否为非空 字符串1 == 字符串2 ---- 判断字符串1是否和字符串2相等 字符串1 != 字符串2 ---- 判断字符串是否和字符串2不相等
多重条件判断
判断1 -a 判断2 逻辑与,判断1和判断2都成立,为真 判断1 -o 判断2 逻辑或,判断1和判断2都成立,最终的结果就为真 !判断 取反,使原先的判断取反
接下来看一下if条件语句
语法:
if [ 条件判断式1 ] then 当条件判断式1成立时,执行程序1 elif [ 条件判断式2 ] 当条件判断式2成立时,执行程序2 else 当所有条件不成立,执行的程序 fi
来看几个例子
判断登录的用户是否为root
[root@localhost ~]# env | grep USER USER=root [root@localhost ~]# env | grep USER | cut -d "=" -f2 root # env查看环境变量,grep提取出user的那一行, cut命令将结果从"="开始分割,只提取第二部分
shell脚本
#!/bin/bash test=$(env | grep USER | cut -d "=" -f2) if [ "$test" == "root" ] then echo "root root root!" else echo "no no no!" fi
查看根分区占用情况
# df -h查看分区占用情况,grep提取出"/"根分区信息, awk提取出第5列的信息, cut将结果通过%分割, 取第一部分 [root@localhost ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda3 10G 1.6G 8.5G 16% / devtmpfs 477M 0 477M 0% /dev tmpfs 488M 0 488M 0% /dev/shm tmpfs 488M 7.7M 480M 2% /run tmpfs 488M 0 488M 0% /sys/fs/cgroup /dev/sda1 197M 102M 96M 52% /boot tmpfs 98M 0 98M 0% /run/user/0 [root@localhost ~]# df -h | grep sda3 /dev/sda3 10G 1.6G 8.5G 16% / [root@localhost ~]# df -h | grep sda3 | awk '{print $5}' 16% [root@localhost ~]# df -h | grep sda3 | awk '{print $5}' | cut -d "%" -f1 16
编写shell脚本
#!/bin/bash df_test=$(df -h | grep sda3 | awk '{print $5}' | cut -d "%" -f1) if [ "$df_test" -ge "90" ];then echo 警告警告! /占用已到90 elif [ "$df_test" -le "60" ];then echo /使用率尚未到达60 else echo /使用率在60-90之间,健康 fi
判断用户输入的是否是目录
#!/bin/bash read -p "请您输入一个路径,来显示是否为目录" -t 30 read_name if [ -d "$read_name" ];then echo "这是目录" elif [ -f "$read_name" ];then echo "这是一个文件" else echo "这不是一个有效路径" fi阅读更多
相关文章推荐
- 【Shell】-- 入门笔记(2):流程控制,重定向及文件包含
- shell--条件测试语句和流程控制语句的使用
- 自己动手写一个简单的Shell之四:流程控制
- Shell 流程控制
- 【重点】Shell入门教程:流程控制(3)条件判断式的真假值
- 三、数据类型转换、运算符、流程控制、字符集
- awk命令之 - 统计/etc/passwd文件中各用户所使用的shell类型及出现次数
- Linux学习之Shell--第五天:Shell流程控制-循环语句while
- 管道符,作业控制,shell变量,全局变量,环境变量的配置文件
- 失败的fileupload上传文件类型控制
- 8.6 管道符和作业控制;8.7—8.8 shell变量(上下);8.9 环境变量配置文件
- JS 控制RadioButtonList 获得上传文件类型后选中
- Linux基础-shell脚本知识整理和脚本编写----------变量、运算符、流程控制、函数、计划任务(发送邮件)
- plupload 如何控制最小宽度和文件类型及跨域
- 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!
- java包的使用、数据类型以及运算符,流程控制
- 4变量、基本类型的值传递、函数,分支,循环,流程控制
- shell(1) 结构化命令——流程控制
- Day1 Python基础学习——概述、基本数据类型、流程控制
- Shell入门(四)之Shell 流程控制