美文网首页我用 LinuxlinuxLinux学习|Gentoo/Arch/FreeBSD
shell 单中括号双中括号和gt、>和加大括号引用变量的区别

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

作者: 霡霂976447044 | 来源:发表于2020-03-17 20:29 被阅读0次

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

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

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

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

a="1"
[ -z $a ]
echo $?  # 0
a=""
[ -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了

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

相关文章

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

    1. 区别1: 在使用单中括号判断变量是否为空的时候不加括号可能会出现异常 单括号就是test命令。test -n...

  • Vue核心知识-Vue的原生指令

    v-text 标签中显示的内容。 与双大括号写法类似,区别是没有双大括号灵活,如 ,双大括号 Text: {{t...

  • shell常用命令回顾3

    shell中各种括号的使用方法(摘自网络) 在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命...

  • Shell 中的中括号用法总结

    Shell 里面的中括号(包括单中括号与双中括号)可用于一些条件的测试: 算术比较, 比如一个变量是否为0, [ ...

  • Shell 中的括号

    shell 编程中,我们经常会用到括号,包括小括号(())、中括号([])还有大括号({})。今天我们来试试,它们...

  • shell中单括号与双括号的区别

    总体来讲,双中括号用法更强大

  • 括号

    小括号,圆括号 单小括号 命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的...

  • shell中各种括号的作用详解

    shell中各种括号的作用详解()、(())、[]、[[]]、{} 一、小括号,圆括号() 1、单小括号 () ①...

  • Shell (六)

    Shell 命令行参数 在脚本中通过 $1, $2, $3, 引用参数${10} 时,参数必须在大括号中。 脚本的...

  • linux shell单中括号与双中括号

    单中括号 [ ]a. [ ] 两个符号左右都要有空格分隔b. 内部操作符与操作变量之间要有空格:如 [“a” = ...

网友评论

    本文标题:shell 单中括号双中括号和gt、>和加大括号引用变量的区别

    本文链接:https://www.haomeiwen.com/subject/disxyhtx.html