【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,标准错 ...
随机推荐
- PHP网站简单架构 – 单独跑php-fpm
这个架构比较简单,不做过多的说明 前端1台Nginx:负载均衡+nfs 中间2台php:php-fpm 后端1台数据库:MySQL 安装略,参考<lnmp最新源码一键安装包> 192.16 ...
- 现代程序设计——homework-06
题目: http://www.cnblogs.com/xinz/p/3382048.html 这是一道要多坑有多坑的题目,题目有很多步.综合起来就是这个意思: 在很久以前,有一个大牛,当然那个时候他还 ...
- 问题-FireDAC连接Sqlite3提示“unable to open database file”
相关资料:http://www.dfwlt.com/forum.php?mod=viewthread&tid=1497&extra= 问题现象:FireDAC连接Sqlite3在开发电 ...
- HDU 5816 Hearthstone (状压DP)
Hearthstone 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5816 Description Hearthstone is an onlin ...
- MANACHER---求最长回文串
求最长回文串,如果是暴力的方法的话,会枚举每个字符为中心,然后向两边检测求出最长的回文串,时间复杂度在最坏的情况下就是0(n^2),为什么时间复杂度会这么高,因为对于每一个作为中心的字符的检测是独立的 ...
- 51单片机或PLC驱动3.5寸至52寸的数字TFTLCD屏、VGA接口显示器、电视机
http://www.21easyic.com/yx/VGA%E6%8E%A7%E5%88%B6%E6%9D%BF.htm
- linux下的调试工具ltrace与strace
ltrace能够跟踪进程的库函数调用,它会显现出哪个库函数被调用,而strace则是跟踪程序的每个系统调用. 下面是一个ltrace与strace的对比 1)系统调用的输出对比 我们用输出he ...
- linux svn使用
SVN是一种版本管理系统,前身是CVS,是开源软件的基石.即使在沟通充分的情况下,多人维护同一份源代码的一定也会出现混乱的情况,版本管理系统就是为了解决这些问题. SVN中的一些概念 : a. rep ...
- 一款多浏览器兼容的javascript多级下拉菜单
这个多级下拉菜单的脚本大小不到2K,带有动画效果,可以方便地支持多个实例,并且能良好兼容WordPress系统wp_list_cats和wp_list_pages生成的多级列表.要初始化一个菜单,只需 ...
- 【Java】Treeset实现自定义排序
两个类,一个学生类,含姓名和出生日期两个属性:还有一个学生排序类,重写compare函数,自定义排序规则是先比较出生日期,如果相同再比较姓名字母 package birthday; import ja ...