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

linux 字符串加入中括号,Shell 中的中括号用法总结相关推荐

  1. linux 脚本map,shell中map的用法

    ##实例代码 #!/bin/bash cat ./switchsql.txt | while read line do tmp_partition_name=`echo $line | awk -F ...

  2. shell中expect的用法

    shell中expect的用法 expect一般用于实现用脚本来自动远程登录,对远程机器执行相关操作 测试机上的expect目录一般在/usr/bin/expect路径 下面是从网上查询的用法总结: ...

  3. shell实例第22讲:shell中分隔符IFS用法

    shell中分隔符IFS用法 1.什么是IFS? IFS在shell中是分隔符的意思,即IFS这个变量中存放了分隔符. 2.IFS是全局变量还是局部变量? (1)linux中变量分两种:全局变量env ...

  4. Shell中的join用法

    Shell中的join用法 将两个文件里指定栏位置同样的行连接起来, 即依照两个文件中共同拥有的某一列, 将相应的行拼成一行(原文件不改变) 内连接(忽略不匹配的行) join file1 file2 ...

  5. Shell中的until用法

    Shell中的until用法 基本格式: until CONDITIONdostatementdone    说明:     until进入循环的条件是:condition不成立时,就执行循环.    ...

  6. shell 中TR的用法,大小写转化

    shell 中TR的用法,大小写转化 1. 用tr 例如:UPPERCASE=$(echo $VARIABLE | tr '[a-z]' '[A-Z]') (把VARIABLE的小写转换成大写)LOW ...

  7. Shell 中的中括号用法总结

    Shell 里面的中括号(包括单中括号与双中括号)可用于一些条件的测试: 算术比较, 比如一个变量是否为0, [ $var -eq 0 ]. 文件属性测试,比如一个文件是否存在,[ -e $var ] ...

  8. linux去除字符串的空格符,Shell中去除字符串前后空格的方法

    经常碰到的场景,需要去除字符串中的前后的空格.在Shell中不像其他语言有strip()来处理,不过也是可以使用诸如awk等命令来处理. 下面是一个简单示例: [root@localhost ~]# ...

  9. linux bash and,linux bash shell中for的用法and示例

    关于linux bash shell中的for语句 在linux中shell是必不可少的一部分,但是在bash shell中有while,for,until等循环命令,今天就介绍一下关于for的一些用 ...

最新文章

  1. SAP gateway 里对 OData eq ne lt gt 操作的实现源代码
  2. c#中使用ref和out传值
  3. 5_数据分析—数据可视化
  4. Flutter TextField 限制只允许输入数字,字母,小数,设置限制小数位数
  5. MacBooster 8 Pro for Mac(系统清理优化软件)
  6. 【数据结构】堆的手动模拟实现
  7. 转一段群里看到的小诗,银才啊银才!
  8. matlab求导赋值,MATLAB 函数先求导再赋值
  9. 惠普win7驱动_win7怎么样打开无线网卡开关
  10. 学习笔记:图像风格迁移
  11. 利用mongodb实现分布式WEB图片存储
  12. 2022年11月编程排行榜
  13. 如何自定义starter
  14. python分析红楼梦中人物形象_分析红楼梦中你喜欢的人物形象
  15. android手机CPU的浅显认识与比较
  16. 新玺配资:股票波段操作中的操作法则
  17. 数据挖掘与分析课程笔记(Chapter 7)
  18. [含文档+PPT+源码等]基于SSM个人财务记账账单收入支出统计管理系统[包运行成功]
  19. RF(四则运算及 Evaluate 用法)
  20. 随笔0006 个人作业——软件产品评测

热门文章

  1. 常见优化算法批量梯度下降、小批量梯度下降、随机梯度下降的对比
  2. Linux下fdisk命令操作磁盘详解--添加、删除、转换分区
  3. 自定义线程类中实例变量与其他线程共享与不共享
  4. 《深入理解Elasticsearch》读书笔记
  5. 一次堆外OOM问题排查
  6. PHP代码调试神器Whoops
  7. WPF阴影效果(DropShadowEffect)
  8. redis中几种数据存储方式的比较
  9. Azure Stack运维工具Azure Stack Tools的使用及实战
  10. HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效。...