shell学习(10)- if的使用
在写Linux脚本的时候,经常会用到判断,这篇主要讲if的具体使用。
if用法:
if [ ] ;then
command
elif [ ] ;then
command
else
command
fi
Shell 里面比较字符写法:
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-le 小于等于
-ge 大于等于
-z 空串
= 两个字符相等
!= 两个字符不等
-n 非空串
判断参数见下表:
| 类型 | 运算符 | 描述 | 示例 |
| 文件比较运算符 | -e filename | 如果 filename 存在,则为真 | [ -e /var/log/syslog ] |
| -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 ] | |
| 字符串比较运算符 | -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 ] |
脚本栗子1:
#!/bin/bash
if [ -d /home/kumufengchun/trash ];then
echo 'ok'
else
echo 'no'
fi if [ -e /home/kunufengchun/test.sh ] && [ -f /home/kumufengchun/test.sh ];then
echo 'exist'
else
echo 'noexist'
fi;
注意:在判断时,if后边的中括号前后一定要有空格,否则会报错,应写成 if [ -e /home/kunufengchun/test.sh ],而不是 if [-e /home/kunufengchun/test.sh]
脚本栗子2:
#!/bin/bash # This script prints a message about your weight if you give it your # weight in kilos and hight in centimeters. if [ ! $# == ]; then echo "Usage: $0 weight_in_kilos length_in_centimeters" exit fi weight="$1" height="$2" idealweight=[height - ] if [ weight−leidealweight ] ; then echo "You should eat a bit more fat." else echo "You should eat a bit more fruit." fi # weight.sh You should eat a bit more fruit. # weight.sh Usage: ./weight.sh weight_in_kilos length_in_centimeters
位置参数 1,2,..., N,#代表了命令行的参数数量, $0代表了脚本的名字,
第一个参数代表1,第二个参数代表2,以此类推,参数数量的总数存在$#中,上面的例子显示了怎么改变脚本,如果参数少于或者多余2个来打印出一条消息。
# bash -x tijian.sh 60 170
+ weight=60
+ height=170
+ idealweight=60
+ '[' 60 -le 60 ']'
+ echo 'You should eat a bit more fat.'
You should eat a bit more fat.
其中-x用来检查脚本的执行情况。
shell学习(10)- if的使用的更多相关文章
- shell学习笔记
shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...
- [转帖][Bash Shell] Shell学习笔记
[Bash Shell] Shell学习笔记 http://www.cnblogs.com/maybe2030/p/5022595.html 阅读目录 编译型语言 解释型语言 5.1 作为可执行程序 ...
- shell学习笔记汇总
1.shell脚本中函数使用 函数定义在前,调用在后,顺序反了就没有效果了.函数调用为:函数名 参数列表 函数内部通过以下变量访问函数的参数:shell脚本函数中: $0: 这个脚本的名字 $n: 这 ...
- (转)Shell学习之Shift的用法
Shell学习之Shift的用法 原文:https://www.cnblogs.com/sunfie/p/5943753.html 位置参数可以用shift命令左移.比如shift 3表示原来的$4现 ...
- Shell 学习(三)
目录 Shell 学习(三) 流程控制 1 if判断 2 case 语句 3 for循环 4 while 循环 2 read 读取控制台输入 2.1 基本语法 2.2 应用实例 3 函数 3.1 系统 ...
- Shell 学习(二)
目录 Shell 学习(二) 1 设置环境变量 1.1 基本语法 1.2 实践 2 位置参数变量 2.1 介绍 2.2 基本语法 2.3 位置参数变量应用实例 3 预定义变量 3.1 基本介绍 3.2 ...
- JavaScript学习10 JS数据类型、强制类型转换和对象属性
JavaScript学习10 JS数据类型.强制类型转换和对象属性 JavaScript数据类型 JavaScript中有五种原始数据类型:Undefined.Null.Boolean.Number以 ...
- shell学习总结之自定义函数
shell学习总结之自定义函数 Myfun (){ echo -n "now i is $i " ! [ "$i" ] && exit ; ec ...
- SHELL学习笔记----IF条件判断,判断条件
SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外. if list then do something here ...
- ThinkPhp学习10
原文:ThinkPhp学习10 查询操作 Action模块 User下的search public function search(){ //判断username是否已经传入,且不为空 if(isse ...
随机推荐
- cmake编译成功之后VS2015可以build Solution但是不可以运行的解决办法
1.在VS2015解决方案管理器中删除掉ALL_BUILD和ZERO_CHECK项,只保留Cmake生成的工程文件. 2.进行第一部之后还是有可能生成(build)失败,此时有可能是缺少文件.
- 思科安全:加密流量威胁检测、加密流量威胁和恶意软件检测、识别无线干扰或威胁、Talos 情报源可加强对已知和新型威胁的防御、分布式安全异常检测
思科DNA竞品比较工具 您的网络能够驱动数字化转型吗? 根据IDC调查,45%的受调研公司计划在未来两年内做好网络数字化的准备.查看数字化网络带来的结果和商业价值. 下载报告 思科 HPE 华为 Ar ...
- linux启动全过程
参考: http://www.staroceans.org/e-book/linux-bootstrap-1.html 1. MBR里的内容属于grub grub-2.02\grub-core\boo ...
- array_1.array_map
note: 为数组的每个元素应用回调函数 <?php $arr = [1, 2, 3]; $arr1 = array_map( function ($value) { return $value ...
- HihoCoder1655 : 第K小最简真分数([Offer收割]编程练习赛39)(唯一分解+容斥定理+二分)(不错的数学题)
描述 给一个整数N,请你求出以N为分母的最简(既约)真分数中第K小的是多少? 输入 两个整数N个K. 对于30%的数据,1 <= N <= 1000000 对于100%的数据,1 < ...
- Win 10 无法打开内核设备“\\.\Global\vmx86”
Win 10操作系统, VMWareWorkstation10 无法打开内核设备“\\.\Global\vmx86”: 系统找不到指定的文件.你想要在安装 VMware Workstation 前重启 ...
- LuoguP1419 寻找段落(二分 单调队列
题目描述 给定一个长度为n的序列a_i,定义a[i]为第i个元素的价值.现在需要找出序列中最有价值的“段落”.段落的定义是长度在[S,T]之间的连续序列.最有价值段落是指平均值最大的段落, 段落的平均 ...
- BZOJ3932:[CQOI2015]任务查询系统
浅谈主席树:https://www.cnblogs.com/AKMer/p/9956734.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem.p ...
- 用OpenLayers开发地图应用
项目背景 最近有一个使用全球地图展示数据的项目,用地图展示数据本身没什么难度,但出于安全和保密的考虑,甲方单位要求项目不能连接外网,只能在内网使用,也就是说,我们不得不在内网中部署一个地图服务器,在这 ...
- lwip 分析一
一.接收端 1.通过ehternetif_input void ethernetif_input(struct netif *netif) { struct ethernetif *etherne ...