shell && 和 || 的短路使用
shell && 和 || 的短路使用
&& 和 || 在 shell 中分别表示 and 和 or,和其它语言类似,这两个操作有短路效应。也就是说,当判断式已经确定时,不再继续处理后续表达式。 && 在失败时中断, || 在成功时中断。 简单的短路经常可以在一些网上的脚本里面看到。
如:
a=1
[ a -eq 2 ] && echo "a=2"
因为在第一个条件测试时,已确定为假(失败),echo 并不会执行。
a=1
[ a -eq 1 ] || echo "a=1"
因为在第一个条件测试时,已确定为真(成功),echo 并不会执行。
这种短路方式会给 shell 编程带来一定的便利,减少很多的 if-else 语句。但在判断条件复杂时,不建议使用过于复杂的短路组合,以免大大降低了代码的可读性。
常见的用法:
命令成功或失败后的后续处理
ifdown -a --exclude=lo && ifup -a --exclude=lo
which lsb_release || exit 0
简单条件判断
[ -n "${MY_IP}" ] && ifconfig eth0 "${MY_IP}" 255.255.255.0
shell && 和 || 的短路使用的更多相关文章
- shell脚本练习(短路练习)
#!/bin/bash #By Spinestars#2013-11-11#This is a lvsnap of auto-create Help(){ echo "Usage: ---d ...
- 【one day one linux】find 用法详解小记
find命令的功能很强大,查找文件的选项很多,所以这是一个很实用并且很常用的linux命令.但是他有个缺点就是搜索的时候比较慢的.而与之相对的有一个locate命令. find的命令格式 find ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
- Shell 编程基础之 && 与 ||
一.引言 Shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中.当 $? == 0 时,表示执行成功:当 $? == 1 时,表示执行失败.有时候,下一条命令 ...
- 【转】 Linux shell的&&和||
http://www.2cto.com/os/201302/189655.html Linux shell的&&和|| shell 在执行某个命令的时候,会返回一个返回值,该返回值 ...
- Linux Shell 从入门到删除根目录跑路指南
1.变量为空导致误删文件base_path=/usr/sbintmp_file=`cmd_invalid`# rm -rf $base_path/$tmp_file这种情况下如果 cmd 执行出错或者 ...
- shell 中 &&和||的方法
Shell && 和 || shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中.当 $? == 0 时,表示执行成功:当 $? == 1 时 ...
- shell中&&和||的使用方法
测试题: [ -z "" ] && echo 0 || echo 1 的结果是多少 看看这两个 && || 的用户 http://blog.csd ...
- Linux shell的&&和||
Linux shell的&&和|| shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中.当 $? == 0 时,表示执行成功:当 $? ...
随机推荐
- php页面之间传值
echo("<script>window.open('2.php?head=".$head."');<script>");
- 让input不可编辑的方法
两种方法: disabled="true " 文字会变成灰色,不可编辑. readOnly="true" 文字不会变色,也是不可编辑的 <input na ...
- Java8 十大新特性详解(转)
本教程将Java8的新特新逐一列出,并将使用简单的代码示例来指导你如何使用默认接口方法,lambda表达式,方法引用以及多重Annotation,之后你将会学到最新的API上的改进,比如流,函数式接口 ...
- 简单排序算法 C++类实现
简单排序算法: 冒泡排序 插入排序 选择排序 .h代码: // // SortClass.h // sort and selection // // Created by wasdns on 16/1 ...
- UE4.7的IOS发布和调试的相关问题
UE4.7以后正式源码免费了,正好最近工作也在做这部分,ue4的官方文档虽然有一部分ios平台的资料,那也只是通过编辑器来发布或预览一类,但手游程序员都知道,一些cpu和gpu性能上的调试是在所难免的 ...
- 【翻译】口袋妖怪X/Y 制作技法
口袋妖怪X/Y [口袋妖怪]系列最终的全3D化 再现图像风格的制作技法 完成系列最初的全3D化的本作,在手掌游戏机的性能和容量的限制中,把杉森建氏的公式设定图风格用Toon Shading ...
- 详解在bash脚本中如何获取自身路径
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 这是stac ...
- 郎科U208(主控 PS2251-50 HYNIX H27UCG8T2MYR)量产还原
6年前的一个U盘 记得还是参加某会议送的,当时做了量产 多做了一个光盘区,现在用不着了 想还原成普通U盘 忘了方法. 可见笔记的重要性 Chipgenius看了主控 PS2251-50 芯片是海力士 ...
- HTML5的新事件
HTML 元素可拥有事件属性,这些属性在浏览器中触发行为,比如当用户单击一个 HTML 元素时启动一段 JavaScript. HTML 元素可拥有事件属性,这些属性在浏览器中触发行为,比如当用户单击 ...
- WCF 无法激活服务,因为它不支持 ASP.NET 兼容性。已为此应用程序启用了 ASP.NET 兼容性
无法激活服务,因为它不支持 ASP.NET 兼容性.已为此应用程序启用了 ASP.NET 兼容性.请在 web.config 中关闭 ASP.NET 兼容性模式,或将 AspNetCompatibil ...