【shell】if
if [ condition ];then
action
fi
| 运算符 | 描述 | 示例 |
| 文件比较运算符 | ||
| -e filename | 如果 filename存在,则为真 | [ -e /var/log/syslog ] |
| -s filename | 如果 filename存在且非空,则为真 | [ -s /tmp/letter ] |
| -d filename | 如果 filename为目录,则为真 | [ -d /tmp/mydir ] |
| -f filename | 如果 filename为常规文件,则为真 | [ -f /usr/bin/grep ] |
| -L filename | 如果 filename为符号链接,则为真 | [ -L /usr/bin/grep ] |
| -r filename | 如果 filename可读,则为真 | [ -r /var/log/syslog ] |
| -w filename | 如果 filename可写,则为真 | [ -w /var/mytmp.txt ] |
| -x filename | 如果 filename可执行,则为真 | [ -L /usr/bin/grep ] |
| filename1-nt filename2 | 如果 filename1比 filename2新,则为真 | [ /tmp/install/etc/services -nt /etc/services ] |
| filename1-ot filename2 | 如果 filename1比 filename2旧,则为真 | [ /boot/bzImage -ot arch/i386/boot/bzImage ] |
| 字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法) | ||
| -z string | 如果 string长度为零,则为真 | [ -z "$myvar" ] |
| -n string | 如果 string长度非零,则为真 | [ -n "$myvar" ] |
| string1= string2 | 如果 string1与 string2相同,则为真 | [ "$myvar" = "one two three" ] |
| string1!= string2 | 如果 string1与 string2不同,则为真 | [ "$myvar" != "one two three" ] |
| 算术比较运算符(以下只能用于整数,不适用于字符串,字符串等于用赋值号=) | ||
| num1-eq num2 | 等于 | [ 3 -eq $mynum ] |
| num1-ne num2 | 不等于 | [ 3 -ne $mynum ] |
| num1-lt num2 | 小于 | [ 3 -lt $mynum ] |
| num1-le num2 | 小于或等于 | [ 3 -le $mynum ] |
| num1-gt num2 | 大于 | [ 3 -gt $mynum ] |
| num1-ge num2 | 大于或等于 | [ 3 -ge $mynum ] |
| shell if | c语言if |
| 0为真,走then | 正好相反,非0走then |
| 不支持整数变量直接if 必须:if [ i –ne 0 ] 但支持字符串变量直接if if [ str ] 如果字符串非0 | 支持变量直接if if (i ) |
[ ] && ——快捷if
| [ -f "/etc/shadow" ] && echo "This computer uses shadow passwors" |
| && 可以理解为then 如果左边的表达式为真则执行右边的语句 |
以函数作为if条件 (函数就相当于command,函数的优点是其return值可以自定义)
| if 以函数作为if条件, getyn then 函数reture值0为真,走then echo " your answer is yes" else 函数return值非0为假,走else echo "your anser is no" fi |
============================逻辑表达式=========================================
逻辑非 ! 条件表达式的相反 if [ ! 表达式 ]
if [ ! -d $num ] 如果不存在目录$num
逻辑与 –a 条件表达式的并列 if [ 表达式1 –a 表达式2 ]
逻辑或 -o 条件表达式的或 if [ 表达式1 –o 表达式2 ]
======================if简化语句================================
&& 如果是“前面”,则“后面”
[ -f /var/run/dhcpd.pid ] && rm /var/run/dhcpd.pid 检查 文件是否存在,如果存在就删掉
|| 如果不是“前面”,则后面
[ -f /usr/sbin/dhcpd ] || exit 0 检验文件是否存在,如果存在就退出
【shell】if的更多相关文章
- 【shell】grep命令
1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局 ...
- 【Shell】使用shell打印菜单,一键安装Web应用
问题描述: [解答] [root@A04-Test- scripts]# more menu.sh #!/bin/bash echo "1.[install lamp]" echo ...
- 【SHELL】:定时任务删除指定目录
现有一个需求,需要定时删除积累过久的目录,并且部分目录不可删除.在此,我们分析了一下该父目录的命名结构:非连续性数字命名,部分目录中包含a.txt文件.如下图所示: 在此,我们对此可作如下操作,获取该 ...
- 【shell】shell脚本入门
1. 前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具,Linux/UNIX系统的底层及基础应用软件的核心大部分涉及Shell脚 ...
- 【shell】分别提取文件名中的基本名与扩展名
文件名是有[基本名]与[扩展名]两部分构成 1.借助[%]操作符从文件名中提取基本名部分 Linux:/qinys # file_name='get_name.tar.gz'Linux:/qinys ...
- 【shell】变量的配置文件
(1)/etc/profile 登录时,会执行.全局(公有)配置,不管是哪个用户,登录时都会读取该文件.(2)/ect/bashrc Ubuntu没有此文件,与之对应的是/ect/bash.b ...
- 【shell】变量
shell变量可分为两类:局部变量和环境变量.局部变量只在创建它们的shell中可用.而环境变量则可以在创建它们的shell及其派生出来的任意子进程中使用.有些变量是用户创建的,其他的则是专用shel ...
- 【shell】多命令执行顺序
:举例[root@andon ~]# date;dd if=/dev/zero of=/home/1 bs=1k count=10240;date ##统计dd命令消耗时间,其中/dev/zero为空 ...
- 【shell】 I/O重定向
1.基本概念 a.I/O重定向通常与 FD有关,shell的FD通常为10个,即 0-9: b.常用FD有3个,为0(stdin,标准输入).1(stdout,标准输出).2(stderr,标准错 ...
随机推荐
- B+树|MYSQL索引使用原则
MySQL一直了解得都不多,之前写sql准备提交生产环境之前的时候,老员工帮我检查了下sql,让修改了一下存储引擎,当时我使用的是Myisam,后面改成InnoDB了.为什么要改成这样,之前都没有听过 ...
- 发现UC/OS-III源码有一处不明白!会不会是BUG.高手过来看看!
http://www.amobbs.com/archiver/tid-4939669.html ———————————————————————————————————————————————————— ...
- Java缓存学习之二:浏览器缓存机制
浏览器端的九种缓存机制介绍 浏览器缓存是浏览器端保存数据用于快速读取或避免重复资源请求的优化机制,有效的缓存使用可以避免重复的网络请求和浏览器快速地读取本地数据,整体上加速网页展示给用户.浏览器端缓存 ...
- PC 端微信扫码注册和登录
一.前言 先声明一下,本文所注重点为实现思路,代码及数据库设计主要为了展现思路,如果对代码效率有着苛刻要求的项目切勿照搬. 相信做过微信开发的人授权这块都没少做过,但是一般来说我们更多的是为移动端的网 ...
- kaptcha验证码插件的使用
kaptcha 是一个非常实用的验证码生成工具.有了它,你可以生成各种样式的验证码,因为它是可配置的.kaptcha工作的原理是调用 com.google.code.kaptcha.servlet.K ...
- velocity 快速入门
基本语法 1.变量定义 : $name 注意 : a.名字和$配合一起用 b.更规范的写法是 ${name} 2.赋值 : #set($name = "威少") 3.条 ...
- 英特尔实感3D摄像头
RealSense 3D(实感3D)是英特尔提供的一套感知计算解决方案,包括了手势的识别.控制,人脸的识别.认证.控制,语音识别与控制,增强现实,3D扫描和重构等许多先进的技术.包括立体眼镜(暂未公开 ...
- Intel® RealSense™ SDK Architecture
In this article, we highlight some of the key changes that you can expect to see in the Intel RealSe ...
- Android布局优化之include、merge、ViewStub的使用
本文针对include.merge.ViewStub三个标签如何在布局复用.有效减少布局层级以及如何可以按需加载三个方面进行介绍的. 复用布局可以帮助我们创建一些可以重复使用的复杂布局.这种方式也意味 ...
- C#开发的WebService使用JSON格式传递数据+Ajax测试
[C#] WebService 使用 JSON 格式傳遞筆記 + JQuery 測試 0 2 因為一些因素,必須改寫WebService,很傳統,但是很多公司還在用.. 因為XML 的關係,不想讓他 ...