《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框架的两种形式 ...
随机推荐
- jquery on 确认删除
$(document).on('click', '.delbtn', function() { if (confirm("确定要删除吗?")) { ...
- Java基础—反射(转载)
转载自: JAVA反射与注解 JAVA反射 主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义. 反射机制是什么 反射 ...
- STL之内存处理工具
STL处理内存主要是使用五个全局函数construct,deconstruct,construct实现: template<typename T1,tyname T2> void cons ...
- Python替换文件内容
#!/usr/bin/env python import fileinput for line in fileinput.input('fansik',inplace=1): line = line. ...
- Django——Session源码分析
首先我们导入django.contrib.sessions.middleware这个中间件,查看里面的Session源码 from django.contrib.sessions.middleware ...
- mtime、atime、ctime基本解释
不罗嗦 Access time.Modify time.Change time,也就是访问时间.修改时间和状态时间. >修改时间:文件的内容被最后一次修改的时间,我们经常用的ls -l命令显示出 ...
- 前端 JavaScript&Dom
JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果.通常JavaScript脚本是通过嵌入在HTML中来实现 ...
- PAT 天梯赛 L1-046. 整除光棍 【模拟除法】
题目链接 https://www.patest.cn/contests/gplt/L1-046 思路 用同余定理以及模拟除法. AC代码 #include <iostream> #incl ...
- yield 表达式形式的应用
import random foods=['banana','apple','peach','grape','pear'] def deco(func): def wrapper(*args,**kw ...
- memcpy与memmove
函数原型: void* memcpy(void *dst,void const *src,size_t count) void* memmove(void *dst,void const *src,s ...