Shell 中的中括号用法总结

Shell 里面的中括号(包括单中括号与双中括号)可用于一些条件的测试:

  • 算术比较, 比如一个变量是否为0, [ $var -eq 0 ]
  • 文件属性测试,比如一个文件是否存在,[ -e $var ], 是否是目录,[ -d $var ]
  • 字符串比较, 比如两个字符串是否相同, [[ $var1 = $var2 ]]

[] 常常可以使用 test 命令来代替,后面有介绍。

算术比较

对变量或值进行算术条件判断:

[ $var -eq 0 ]  # 当 $var 等于 0 时,返回真[ $var -ne 0 ]  # 当 $var 不等于 0 时,返回真

需要注意的是 [ 与 ] 与操作数之间一定要有一个空格,否则会报错。比如下面这样就会报错:

[$var -eq 0 ]  或 [ $var -ne 0]

其他比较操作符:

操作符 意义
-gt 大于
-lt 小于
-ge 大于或等于
-le 小于或等于

可以通过 -a (and) 或 -o (or) 结合多个条件进行测试:

[ $var1 -ne 0 -a $var2 -gt 2 ]  # 使用逻辑与 -a[ $var1 -ne 0 -o $var2 -gt 2 ]  # 使用逻辑或 -o

文件系统属性测试

使用不同的条件标志测试不同的文件系统属性。

操作符 意义
[ -f $file_var ] 变量 $file_var 是一个正常的文件路径或文件名 (file),则返回真
[ -x $var ] 变量 $var 包含的文件可执行 (execute),则返回真
[ -d $var ] 变量 $var 包含的文件是目录 (directory),则返回真
[ -e $var ] 变量 $var 包含的文件存在 (exist),则返回真
[ -c $var ] 变量 $var 包含的文件是一个字符设备文件的路径 (character),则返回真
[ -b $var ] 变量 $var 包含的文件是一个块设备文件的路径 (block),则返回真
[ -w $var ] 变量 $var 包含的文件可写(write),则返回真
[ -r $var ] 变量 $var 包含的文件可读 (read),则返回真
[ -L $var ] 变量 $var 包含是一个符号链接 (link),则返回真

使用方法如下:

fpath="/etc/passwd"if [ -e $fpath ]; then  echo File exits;else  echo Does not exit;fi

字符串比较

在进行字符串比较时,最好使用双中括号 [[ ]]. 因为单中括号可能会导致一些错误,因此最好避开它们。

检查两个字符串是否相同:

[[ $str1 = $str2 ]]

当 str1等于str1等于str2 时,返回真。也就是说,str1 和 str2 包含的文本是一样的。其中的单等于号也可以写成双等于号,也就是说,上面的字符串比较等效于 [[ $str1 == $str2 ]]。

注意 = 前后有一个空格,如果忘记加空格, 就变成了赋值语句,而非比较关系了。

字符串的其他比较情况:

操作符 意义
[[ $str1 != $str2 ]] 如果 str1 与 str2 不相同,则返回真
[[ -z $str1 ]] 如果 str1 是空字符串,则返回真
[[ -n $str1 ]] 如果 str1 是非空字符串,则返回真

使用逻辑运算符 && 和 || 可以轻松地将多个条件组合起来, 比如:

str1="Not empty"str2=""if [[ -n $str1 ]] && [[ -z $str2 ]];then  echo str1 is nonempty and str2 is empty string.fi

test 命令也可以从来执行条件检测,用 test 可以避免使用过多的括号,[] 中的测试条件同样可以通过 test 来完成。

if [ $var -eq 0 ]; then echo "True"; fi

等价于:

if test $var -eq 0; then echo "True"; fi

作者:liuchengxu_

原文:https://blog.csdn.net/simple_the_best/article/details/75915767

(0)

相关推荐

  • 「shell入门到精通」 一文带你熟悉shell脚本的各种表达式

    作者:老油条IT记 公众号:老油条IT记 #前言:在shell脚本中,有各种的表达式,包括有条件测试表达式,文件表达式,字符串表达式,整数表达式,接下来我们来了解一下他们的使用方法 1.条件测试表达式 ...

  • 【Linux 笔记】Linux 基本操作 - 02. shell编程基础

    笔记接上篇[Linux 笔记]Linux 基本操作 - 01. 系统认知-文本处理-软件安装-环境变量.笔记大部分源于生信技能树的B站视频教程[生信技能树]生信人应该这样学linux(更新至第14集) ...

  • 一文读懂 Shell 中各种括号的作用

    作者:乌托邦2号 来源:https://reurl.cc/qmMvxg 一.小括号,圆括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本 ...

  • shell脚本中$的多种用法($* 、 $@ 、$_ 、$# 、$$ 、$! 、 $? )和 -eq,-ne,-gt,-lt,-ge,-le数字比较符

    shell脚本中$的多种用法($* . $@ .$_ .$# .$$ .$! . $? )和 -eq,-ne,-gt,-lt,-ge,-le数字比较符 1.在shell中进行比较时,结果为0代表真,为 ...

  • [shell]shell 中| && || () {} 用法以及shell的逻辑与或非

    转自:https://www.jianshu.com/p/617c1ee1e46e | 运算符 管道符号,是unix一个很强大的功能,符号为一条竖线:"|". 用法: comman ...

  • 根管治疗中碘制剂的用法 :

    周佳齐医生: 给自己平时看资料的一个总结,希望都可以用的到. 根管治疗中碘制剂对于残髓的作用: 根管治疗过程中,常遇到残髓不容易清除干净的问题.我的经验是,先用碘酚导入根管,两分钟后用拔髓针试试,多数 ...

  • 古法中“委中”的用法(续)

    点击加载图片 巨灵,与元气齐升,为九元真母 前一篇文章中讲到了委中的古法运用→ 腰痛的分型,委中在治疗腰痛上的作用和禁忌,本文继续引经据典,讲述委中的多种用法,黄贵生老师经常利用夜间打坐前后的空档时间 ...

  • 奇门遁甲知识 | 详解天三门地四户在奇门遁甲中的正确用法与十二月建应用点窍

    奇门遁甲预测中天三门地四户的方法主要是运用于择吉. 天三门是上天的通道,是查天上的事,起运改运用的. 地四户是入地的四条通道,用于查地下的事,阴间的事和过阴的事. 一.天三门 天三门的查法:天三门就是 ...

  • 英语语法:外刊中spend的用法

    ‍‍ 上几期:卫报:疫情期间3000万人在学习数字技能.美国大规模制裁俄罗斯并驱逐外交官.如何思考:你从未学过的一项技能.如何思考:你从未学过的一项技能(2).如何思考:你从未学过的一项技能(3) 关 ...

  • C++ 中 static 的用法静态成员变量

    对象的内存中包含了成员变量,不同的对象占用不同的内存,这使得不同对象的成员变量相互独立,它们的值不受其他对象的影响.例如有两个相同类型的对象 a.b,它们都有一个成员变量 m_name,那么修改 a. ...

  • C++ 中 static 的用法

    在类中,static 除了可以声明静态成员变量,还可以声明静态成员函数.普通成员函数可以访问所有成员(包括成员变量和成员函数),静态成员函数只可以访问静态成员. 编译器在编译一个普通成员函数时,会隐式 ...

  • 字中六合的用法详解, 地支六合如何运用

    地支六合比较复杂,分为合来.合去.合绊,并且还分合吉.合凶,绝非一般的八字命书上说的,看到六合就说好,试想,得病了,是否也是和疾病相合,如何能好,八字中六合的用法详解如下:  1.合来 从字面的意思 ...