shell脚本之if语句
一、前言
结构化编程中,主要有三种结构:顺序、分支、循环。由此可见分支判断的重要性。
而且在shell编程中往往会遇到进行判断的情况,比如:判断文件是否存在、目录是否存在等等。
二、if语句的结构
if [ 条件 ];
then
...
elif [ 条件 ];
then
...
else
...
fi
三、shell中的分支判断
shell中的判断有以下几种:
1.字符串判断
str1 = str2 当两个串有相同内容时为真
str1 != str2 当两个串内容不同时为真
-n str1 当串的长度大于0时为真
-z str1 当串的长度为0是为真
str1 当串为非空时为真
2.数字判断
n1 -eq n2 两数相等为真
n1 -ne n2 两数不等为真
n1 -gt n2 n1大于n2为真
n1 -ge n2 n1大于等于n2为真
n1 -lt n2 n1小于n2为真
n1 -le n2 n1小于等于n2为真
3.文件判断
-r file 文件可读为真
-w file 文件可写为真
-x file 文件可执行为真
-f file 文件为普通文件为真
-d file 文件为目录文件为真
-c file 文件为字符特殊文件为真
-b file 文件为块特殊文件为真
-s file 文件为链接文件为真
-t file 当文件描述符指定的设备为终端时为真
4.组合
-a 与
-o 或
! 非
5.注意
今天写了个脚本,运行的时候一直出错:
if [[ $ = 'DEBUG' ]]; then
CMD="make clean;make COMFLAG='-D__LINUX__ ' DEBUGFLAG='-g'"
elif [[ $ = 'RELEASE' ]]; then
CMD="make clean;make COMFLAG='-D__LINUX__ '"
else
echo "Error parameter!"
exit
fi
当条件处使用的是: if [ $ = 'DEBUG' ] 时,不加参数直接运行总是报错:unary operator expected
原因是当没有参数时,该行变为: if [ = 'DEBUG' ] 那么按照语法来说,'['和'DEBUG'是肯定不相等的,这样前面就少了一个'[',所以报错了。
shell脚本之if语句的更多相关文章
- shell 脚本之判断语句 if 详解
使用 Linux 系统这么长时间,对 shell 脚本也算是比较熟悉.其实不管是搞开发,还是搞运维,shell 脚本都是必备的基本技能.这次抽时间好好总结一下 shell 方面的知识,综合的再学习一下 ...
- shell脚本-循环选择语句
shell脚本-循环选择语句 过程式编程语言: 顺序执行 选择执行 循环执行 注:条件中的变量,可以在执行语句中使用,不用在加上"$". if语句 根据命令的退出状态来执行命令 单 ...
- Linux Shell脚本编程while语句
Linux Shell脚本编程while语句案例 1,每隔3秒,打印一次系统负载 #!/bin/bash while truedo uptime sleep 3done 2,把监控结果保存 ...
- shell脚本之循环语句与函数
shell脚本之循环语句与函数 echo的用法: echo -n #表示不换行输出 echo -e #输出转义字符,将转义后的内容输出到屏幕上 转义字符: \n :换行,被输出的字符从"\n ...
- shell脚本的if语句,判断某程序是否存在,不存在启动该程序!
想必大家都知道 "如果......那么......" 这种语法的应用吧! 当然呢,linux下对于这种用法也是有所考虑的,很多时候我们都需要写一个shell脚本,难免会避免if语句 ...
- 《linux就该这么学》第五节课,shell脚本的各种语句!
第四章shell语句 (据课本和虚拟机实验排版,借鉴请改动) 4.2:shell脚本 脚本包括:脚本声明,脚本注释,脚本内容和命令 例:#!/bin/bash ...
- shell脚本、if语句、for循环语句
shell在shell脚本中,如果用户不输入东西,系统不自动退出,this is a bug!文件测试语句:-d -f -r -w -x -e逻辑测试语句:“&&”与(同时满足) “| ...
- shell脚本if判断语句报错[: too many arguments的两种原因
shell脚本,if判断语句报错[: too many arguments 我遇到过两种情况: 1.第一中情况就是网上大家说的,字符串变量中可能存在空格,shell解析时将其认为是多个参数,再进行判断 ...
- Linux Shell脚本编程while语句案例
1,每隔3秒,打印一次系统负载 #!/bin/bash while true do uptime done 2,把监控结果保存到文件,在后台执行,然后用tail -f监控文件变化 ghostwu@de ...
随机推荐
- js拖拽换位置,使用数组方法
之前一直需要一个拖拽效果,网上找了些感觉不是不好用,就是写的有些地方让人不太满意,下面贡献一个自己写的.亲测可用,拖动后可互换位置!(带有注释) 方法/步骤 CSS代码部分 <style> ...
- 数据库SQL CRUD
1.删除表 drop table +表名 2.修改表 alter table+表名+ add(添加)+列名+ int(类型) alter table+表名+ drop(删除)+column(列) ...
- Java基础(42):Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在主方法调用,后者必须先实例化后用实例调用)
package lsg.ap.april4th2; /* 知识点:1.Getter and Setter 的应用 2.局部变量与成员变量(也可叫做全局变量) 3.Static关键字的用法 a.成员变量 ...
- poj: 3094
简单题 #include <iostream> #include <stdio.h> #include <string> #include <stack> ...
- 安装Eclipse并配置JacORB插件
前人成果 • eclipse中开发corba完整说明(jacORB版) http://blog.csdn.net/hq0927/article/details/8129534 • ...
- Centos配置Caffe详解
http://www.tuicool.com/articles/uiuA3e
- 夺命雷公狗---2016-linux---3之目录一般作用
最好文件还是存放在自己的home目录下 建议:在很多时候如果需要系统备份最好去备份boot和etc这两个目录
- :eq(index)
匹配一个给定索引值的元素 从 0 开始计数 查找第二行 HTML 代码: <table> <tr><td>Header 1</td></tr> ...
- Erlang-基础篇
一.整数运算: 1.Erlang采用不定长的整数来进行整数的算术演算.在Erlang中,整数运算没有误差,因此无需担心运算溢出,也不用为了一个固定字长容纳不下一个大整数而伤脑筋: 二.变量: 1.所有 ...
- IE6不支持CSS的属性选择器
input[type="text"] { width: 50px; } 测试IE6不生效,而IE7以上浏览器则没问题