热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

shell单中括号双中括号和gt、>和加大括号引用变量的区别

1.区别1:在使用单中括号判断变量能否为空的时候不加括号可能会出现异常单括号就是test命令。testn判断变量能否不为空,假如不为空那么表达式返回0通过,假如是空那么表达式返回1

1. 区别1: 在使用单中括号判断变量能否为空的时候不加括号可能会出现异常

单括号就是test命令。test -n 判断变量能否不为空,假如不为空那么表达式返回0通过,假如是空那么表达式返回1不通过。0代表True,1代表False。test -z判断变量能否为空,假如为空表达式返回0,假如不为空返回False。下面以-z为例,演示中括号判断变量的问题。

a=""[ -z $a ]echo $? # 0a="1"[ -z $a ]echo $? # 1

看上去没有什么问题。现在看一下-n

a="1"[ -z $a ]echo $? # 0a=""[ -z $a ]echo $? # 0

我们可以看到-n不论怎样样都会通过。那么如何处理呢,可以两种处理方法:

  • 使用双引号包裹变量
  • 使用双中括号

a=""[ -n "$a" ]echo $? # 1[[ -n $a ]]echo $? # 1

2 区别2: 双括号使用&&单括号使用-a语法进行多重判断

[ 1 -gt 3 -a 1 -gt 3 ][[ 1 -gt 3 && 1 -gt 3 ]]

3 区别3: 正则匹配变量值只能用在双中括号

[[ $tel =~ [0-9]{10} ]]

4 区别4: >在单括号使用需要加上\

PS:貌似zsh不支持,所以使用>最好使用双括号

5 >-gt的区别

> 比较的是对应字符ascii码,-gt比较的肯定要为数字

6 加大括号引用变量区别

很简单,加大括号可以在引用变量的时候明确那个变量

? ~ a="zhangsan"? ~ echo ${a}bc zhangsanbc? ~

不加大括号就变成引用变量abc了

最后,尽量使用双中括号。


推荐阅读
  • 20145216《信息安全系统设计基础》第一周学习总结教材学习内容总结Linux基础1.ls命令ls或ls.显示是当前目录的内容,这里“.”就是参数,表示当前目录,是缺省的 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 分享2款网站程序源码/主题等后门检测工具
    本文介绍了2款用于检测网站程序源码和主题中是否存在后门的工具,分别是WebShellkiller和D盾_Web查杀。WebShellkiller是一款支持webshell和暗链扫描的工具,采用多重检测引擎和智能检测模型,能够更精准地检测出已知和未知的后门文件。D盾_Web查杀则使用自行研发的代码分析引擎,能够分析更为隐藏的WebShell后门行为。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • jmeter使用:解决在执行高并发时获取token问题
    一.添加setupthreadgroup前置线程在并发量比较高的情况下,获取token的接口应该写到其他线程里,这样获取token的接口就只会执行一次,就能得到下一个接口需要传入的 ... [详细]
  • 文件上传漏洞利用介绍
    目录文件上传漏洞利用介绍1.绕过js验证2.绕过MIME-TYPE验证3.绕过基于黑名单验证基于文件后缀名验证介绍基于文件后缀名验证方式的分类基于黑名单验证代码分析利 ... [详细]
  • 下载maven:http:maven.apache.orgdownload.cgi解压缩,然后配置环境变量:echo$SHELL  ——-查看当前MacOSX是什么样的Shell如 ... [详细]
  • 为什么jupyterlab运行程序的时候会自动停止_JupyterLab史上最全详解,全网都在看,赶紧收藏...
    点击上方蓝字关注我们!Jupyter源于IpythonNotebook,是使用Python(也有R、Julia、Node等其他语言的内核)进行代码演示、 ... [详细]
  • Centos7安装高版本zshzim框架安装powerlevel10k
    1.安装高版本zsh1.1卸载低版本zshsudoyumremovezsh-y1.2下载源码源码:https:zsh.sourceforge.ioArcsour ... [详细]
  • Linux 命令行获取天气
    目标:使用Linux命令行显示天气预报。发行版:所有Linux发行版。要求:能连上因特网的Linux难度:容易约定& ... [详细]
  • Autoware 进行 Robosense16 线雷达与 ZED 双目相机联合标定!
    项目要标定雷达和相机,这里记录下我标定过程,用的速腾Robosense-16线雷达和ZED双目相机。一、编译安装Autoware-1.10.0我没有安装最新版本的Autoware, ... [详细]
  • brew结合iTerm2花式玩转MacOS软件管理的终端指令
    brew结合iTerm2花式玩转MacOS软件管理的终端指令-1.背景需求  刚拿到新的Mac电脑工作时,linux上很多常用指令是没有的安装的,如wget,git,telnet ... [详细]
  • MNN windows
    参考:编译转换工具:https:blog.csdn.netjacke121articledetails106407234解决flatc.exe找不到 ... [详细]
  • 一、工具类packagecom.szsh.zpb_company.utilsimportandroid.content.ContentValuesimportandroid.co ... [详细]
author-avatar
潇洒嘉新
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有