《Advanced Bash-scripting Guide》学习(十八):[[ ]]与[ ]的一些特殊情况

发布时间 - 2017-07-11 00:00:00    点击率:

本文所选的例子来自于《advanced bash-scripting gudie》一书,译者 杨春敏 黄毅

 

1 例1:
2 [ 1 -eq 1 ] && [ -n "`echo true 1>&2`" ]            #true。1>&2表示将标准输出输出到文件描述符2(标准错误输出:屏幕)
3 [ 2 -eq 2 ] && [ -n "`echo true 1>&2`" ]            #(not output)
4 
5 [ 1 -eq 2 -a -n "`echo true 1>&2`" ]                #true,这是错误的结果,难道是因为单括号数值计算中有两个条件判断吗?
6 7 [[ 1 -eq 2 && -n "`echo true 1>&2`" ]               #(not output),有些-a 或 -o 不正确的情况,显然&&或||要稳妥些

-a 和 -o一般与[ ]使用,如:[ "$exp1" -a "$exp2" ]

&& 和 || 一般与[[ ]] 使用,如:[[ condition1 && condition2 ]]

 

1 例2
2 [ $a == z* ]      #模式匹配:如果$a以a开头,则为true
3 [ $a == "z*" ]    #字符匹配:如果$a的值等于z*,则为true
4 
5 [ $a = z* ]       #file glo*g and word splitting 将会发生,什么意思?
6 [ $a = "z*" ]     #字符匹配:如果$a的值等于z*,则为true

以上属于字符串的比较,只不过==的功能在[[]][]中的行为是不同的

 

 1 例3
 2 #只能用[[ ]] 可以进行进制转换比较
 3 
 4 decimal=15                                     #十进制
 5 octial=017                                     #八进制
 6 hex=0x0f                                       #十六进制
 7 if [ "$decimal" -eq "$octal" ]
 8 then
 9     echo "$decimal equals $octal"
10 else
11     echo "$decimal is not equal to $octal"     # 15 is not equal to 017
12 fi              
# 不能用单括号[ ]计算! 13 if [[ "$decimal" -eq "$octal" ]] 14 then 15 echo "$decimal equals $octal" # 15 equals 017 16 else 17 echo "$decimal is not equal to $octal" 18 fi # 要用双括号[[ ]]计算! 19 if [[ "$decimal" -eq "$hex" ]] 20 then 21 echo "$decimal equals $hex" # 15 equals 0x0f 22 else 23 echo "$decimal is not equal to $hex" #[[ $hexadecimal ]]也能计算
24 fi

 


# 则为  # 这是  # 是因为  # 将会  # 也能  # 中有  # 要用  # 来自于  # 不能用  # 什么意思 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  七夕网站制作视频,七夕大促活动怎么报名?  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  jquery插件bootstrapValidator表单验证详解  Laravel如何生成URL和重定向?(路由助手函数)  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  WEB开发之注册页面验证码倒计时代码的实现  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  js代码实现下拉菜单【推荐】  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  Laravel如何实现本地化和多语言支持?(i18n教程)  中国移动官方网站首页入口 中国移动官网网页登录  在线制作视频网站免费,都有哪些好的动漫网站?  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  Angular 表单中正确绑定输入值以确保提交与验证正常工作  Laravel用户密码怎么加密_Laravel Hash门面使用教程  如何在云主机上快速搭建网站?  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  北京专业网站制作设计师招聘,北京白云观官方网站?  Laravel如何实现API版本控制_Laravel版本化API设计方案  如何在VPS电脑上快速搭建网站?  如何快速启动建站代理加盟业务?  Python图片处理进阶教程_Pillow滤镜与图像增强  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  LinuxShell函数封装方法_脚本复用设计思路【教程】  如何用美橙互联一键搭建多站合一网站?  三星网站视频制作教程下载,三星w23网页如何全屏?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  详解jQuery中的事件  高防服务器如何保障网站安全无虞?  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  历史网站制作软件,华为如何找回被删除的网站?  WordPress 子目录安装中正确处理脚本路径的完整指南  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】