《Advanced Bash-scripting Guide》学习(十八):[[ ]]与[ ]的一些特殊情况
本文所选的例子来自于《Advanced Bash-scripting Gudie》一书,译者 杨春敏 黄毅
例1: [ -eq ] && [ -n "`echo true 1>&2`" ] #true。1>&2表示将标准输出输出到文件描述符2(标准错误输出:屏幕) [ -eq ] && [ -n "`echo true 1>&2`" ] #(not output) [ -eq -a -n "`echo true 1>&2`" ] #true,这是错误的结果,难道是因为单括号数值计算中有两个条件判断吗? [[ -eq && -n "`echo true 1>&2`" ] #(not output),有些-a 或 -o 不正确的情况,显然&&或||要稳妥些
-a 和 -o一般与[ ]使用,如:[ "$exp1" -a "$exp2" ]
&& 和 || 一般与[[ ]] 使用,如:[[ condition1 && condition2 ]]
例2 [ $a == z* ] #模式匹配:如果$a以a开头,则为true [ $a == "z*" ] #字符匹配:如果$a的值等于z*,则为true [ $a = z* ] #file globbing and word splitting 将会发生,什么意思? [ $a = "z*" ] #字符匹配:如果$a的值等于z*,则为true
以上属于字符串的比较,只不过==的功能在[[]]和[]中的行为是不同的。
例3
#只能用[[ ]] 可以进行进制转换比较
#十进制
octial= #八进制
hex=0x0f #十六进制
if [ "$decimal" -eq "$octal" ]
then
echo "$decimal equals $octal"
else
is not equal to
fi # 不能用单括号[ ]计算!
if [[ "$decimal" -eq "$octal" ]]
then
equals
else
echo "$decimal is not equal to $octal"
fi # 要用双括号[[ ]]计算!
if [[ "$decimal" -eq "$hex" ]]
then
equals 0x0f
else
echo "$decimal is not equal to $hex" #[[ $hexadecimal ]]也能计算
fi
《Advanced Bash-scripting Guide》学习(十八):[[ ]]与[ ]的一些特殊情况的更多相关文章
- 强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)
在强化学习(十七) 基于模型的强化学习与Dyna算法框架中,我们讨论基于模型的强化学习方法的基本思路,以及集合基于模型与不基于模型的强化学习框架Dyna.本文我们讨论另一种非常流行的集合基于模型与不基 ...
- Scala学习十八——高级类型
一.本章要点 单例类型可用于方法串接和带对象参数的方法 类型投影对所有外部类的对象都包含了其他内部类的实例 类型别名给类型指定一个短小的名称 结构类型等效于”鸭子类型“ 存在类型为泛型的通配参数提供了 ...
- Linux学习十八之、善用判断式
原文地址:http://vbird.dic.ksu.edu.tw/linux_basic/0340bashshell-scripts_3.php 善用判断式 在第十一章中,我们提到过 $? 这个变量所 ...
- Java学习十八
学习内容: 1.Java集合 1.自定义的set类添加重复数据需要在实体类中添加hashcode和equals方法. 2.查找set对象信息(以宠物猫为例) //在集合中查找花花的信息并输出 if(s ...
- Salesforce LWC学习(十八) datatable展示 image
本篇参看: https://developer.salesforce.com/docs/component-library/bundle/lightning-datatable/documentati ...
- vue学习(十八)使用自定义指令 为字体渲染颜色
<div id="app"> //v-color 是自定义的 <input type="text" class="form-cont ...
- MYSQL数据库学习十八 数据库维护和性能提高
18.1 数据备份 可能造成数据损失的原因有: 存储介质故障:保存数据库文件的磁盘设备损坏,用户没有数据库备份导致数据彻底丢失. 用户的错误操作:如误删了某些重要数据,甚至整个数据库. 服务器的彻底瘫 ...
- JavaWeb学习 (十八)————JSP标签
一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...
- spring学习 十八 spring的声明事物
1.编程式事务: 1.1 由程序员编程事务控制代码.commit与rollback都需要程序员决定在哪里调用,例如jdbc中conn.setAutoCimmit(false),conn.commit( ...
- Python3.5学习十八 Python之Web框架 Django
Python之Web框架: 本质:Socket 引用wsgiref创建web框架 根据web框架创建过程优化所得: 分目录管理 模板单独目录 执行不同函数单独存入一个方法py文件 Web框架的两种形式 ...
随机推荐
- laydate日历控件
var start = { elem: '#start_0', format: 'YYYY-MM-DD', max: laydate.now(-), istime: false, istoday: f ...
- ajax异步请求分页显示
html代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- 六百字读懂 Git(转)
add by zhj:还是原文 六百字读懂 Git 看着更舒服一些,显示更好 原文:六百字读懂 Git 英文原文:Git in 600 words 译注:来自 Hacker School 的 Mary ...
- Python基础-生成器和迭代器
生成器都是迭代器,迭代器不一定是生成器 def fansik(max): n, before, after = 0, 0, 1 while n < max: print(before) befo ...
- idea java web 使用说明
String realPath = request.getSession().getServletContext().getRealPath(uploadPath);//上传压缩包所在目录 ...
- zabbix监控Mariadb数据库
1.介绍: zabbix自带的MySQL插件来监控mysql数据库,但是太过简陋,基本没有啥作用,所以需要做更详细的监控,而percona就有这个详细监控的模版以及脚本,正好拿过来用. percona ...
- Centos6.6安装mysql记录
一.环境介绍: 系统:Cerntos6.6 Mysql版本:mysql-5.6.34 二.安装操作: 1.卸载旧版本: rpm -qa |grep mysql mysql-server-5.1.73- ...
- sorted 、 filter 、 map
sorted 排序函数 内置函数中提供了一个通用的排序方案 ,返回一个新的列表,不会改变原数据 语法: sorted(iterable, key, reverse) key: 排序方案, sort ...
- C# 获取MD5值
class CommonHelper { /// <summary> /// 通过字符串获取MD5值,返回32位字符串. /// </summary> /// <para ...
- ReactNative学习一
ReactNative 主要学习来源于RN官方文档https://reactnative.cn/docs/0.51/getting-started.html 不过除了这个RN官方文档,其他RN中文 ...