Shell中的括号、方括号、花括号、双括号和双方括号使用场景总结
前言
最近在学习Shell脚本编程时,发现别人程序的 if-then代码块 中if的条件语句中存在 双括号(())、双中括号[[]] 的使用,因而查阅了相关资料,同时也看到了一篇不错的博文,对Shell脚本中括号的使用作出了总结,特此记录和分享
1. 括号( )
括号一般在命令替换时与美元符号$配合使用,用于获取括号内命令的输出,如
#!/bin/bash # 输出今年的年份 year=$(date +%Y) echo "This year is $year"
2. 方括号[ ]
Shell中的方括号一般有两种使用场景,一种是和美元符号$搭配用于Shell中整型数据运算;另一种是单独使用,作为test命令的简写形式
2.1 搭配美元符号$用于整型计算
示例如下:
# 1. 用于整型数据计算 var1=100 var2=200 # 可以使用 $+方括号来表示整型运算 var3=$[ $var1+$var2+1 ] # 也可以使用 $+双括号来表示整型运算 var4=$(($var1 + $var2 + 1)) echo $var3 echo $var4
由于 if-then语句 不能测试命令状态码之外的条件,所以Bash Shell提供了 test命令 用于帮助 if-then语句 测试其他的条件,如数值比较、字符串比较、文件比较等,而test命令的简写形式就是方括号[ ],其中第一个方括号和第二个方括号之前都必须加上空格,否则会报错
2.2 数值比较
比较 | 描述 |
---|---|
n1 -eq n2 | 检查n1是否与n2相等 |
n1 -ge n2 | 检查n1是否大于或等于n2 |
n1 -gt n2 | 检查n1是否大于n2 |
n1 -le n2 | 检查n1是否小于或等于n2 |
n1 -lt n2 | 检查n1是否小于n2 |
n1 -ne n2 | 检查n1是否不等于n2 |
示例如下:
#!/bin/bash # 2. 数值比较 n1=20 n2=10 if [ $n1 -ge $n2 ]; thenecho "n1 is greater than or euqal to n2" elseecho "n1 is less than n2" fi
注意:Bash Shell只能直接处理整数,赋值浮点数会报错
2.3 字符串比较(注意符号两边两边要有空格)
比较 | 描述(注意符号两边需要空格) |
---|---|
str1 = str2 | 检查str1是否和str2相同 |
str1 != str2 | 检查str1是否和str2不同 |
str1 < str2 | 检查str1是否比str2小 |
str1 > str2 | 检查str1是否比str2大 |
-n str1 | 检查str1的长度是否非0 |
-z str1 | 检查str1的长度是否为0 |
示例如下:
# 3. 字符串比较 user=root if [ $(whoami) = $user ]; thenecho "root is online" elseecho "root is offline" fi
2.4 文件比较
比较 | 描述 |
---|---|
-d file | 检查file是否存在并是一个目录 |
-e file | 检查file是否存在 |
-f file | 检查file是否存在并是一个文件 |
-r file | 检查file是否存在并可读 |
-s file | 检查file是否存在并非空 |
-w file | 检查file是否存在并可写 |
-x file | 检查file是否存在并可执行 |
-O file | 检查file是否存在并属当前用户所有 |
-x file | 检查file是否存在并可执行 |
-G file | 检查file是否存在并且默认组与当前用户相同 |
file1 -nt file2 | 检查file1是否比file2新 |
file1 -ot file2 | 检查file1是否比file2旧 |
示例如下:
# 4. 文件比较 fileName=test3 if [ -e $fileName ]; thenecho "$fileName exists" elseecho "$fileName doesn't exists" fi
2. 花括号{ }
花括号一般用于需要变量和字符串组合输出时,若想要实现变量后拼接字符串就需要使用花括号
示例如下:
#!/bin/bash # 花括号使用练习 var=50 var1=100 var2=200 # 若想要实现var变量后拼接字符串就需要使用花括号 echo $var1 ${var}1 echo $var2 ${var}2
3. 双括号(( ))
双括号允许在比较语句中使用高级数学表达式,也可以与美元符号搭配,用于整型数据计算
符号 | 描述 |
---|---|
val++ | 后增 |
val-- | 后减 |
++val | 先增 |
--val | 先减 |
! | 逻辑求反 |
~ | 按位求反 |
** | 幂运算 |
<< | 左移位 |
>> | 右移位 |
& | 布尔与 |
| | 布尔或 |
&& | 逻辑与 |
|| | 逻辑或 |
示例如下:
#!/bin/bash # 双括号使用练习 # 用于高级数学表达式 var1=10 if (($var1 >= 10)); thenfor ((i = 0; i < 3; i++)); doecho $idone fi
# 用于整型数据计算 var1=100 var2=200 # 可以使用$+双方括号来表示整型运算 var3=$[ $var1+$var2+1 ] # 也可以使用$+双括号来表示整型运算 var4=$(($var1 + $var2 + 1)) echo $var3 echo $var4
4. 双方括号[[ ]]
双方括号提供了针对字符串比较的高级特性,能够使用数学符号比较字符串,并实现了模式匹配
#!/bin/bash # 双方括号使用练习 fileName=test5 if [[ $fileName==test* ]]; thenecho "This is a test file!"if [[ $fileName==test5 ]]; thenecho "This file is test5!"fi fi
注意:不是所有的Shell都支持双方括号
5. 参考资料
《Linux命令行与shell脚本编程大全(第三版)》
End~
Shell中的括号、方括号、花括号、双括号和双方括号使用场景总结相关推荐
- Linux之shell中的大括号、中括号、小括号的使用详解+多示例
摘要:很多人和我一样对于shell的各种括号的各种用法肯定不是很清楚,有时候看见别人脚本都不知道是什么意思,今天就来说说bash中的大中小括号的用法和解释,本人常用bash所以也只能用bash来说明了 ...
- Linux Shell中有三种引号的用法
Linux Shell中有三种引号,分别为双引号(" ").单引号(' ')以及反引号(` `). 其中双引号对字符串中出现的$.''.`和\进行替换:单引号不进行替换,将字符串中 ...
- shell中的括号(小括号,中括号,大括号/花括号)
一.小括号,园括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号, ...
- shell脚本中的几个括号总结(小括号/大括号/花括号)
[转载]shell脚本中的几个括号总结(小括号/大括号/花括号) (2011-10-08 21:23:34) 转载▼ 标签: 杂谈 分类: linux shell脚本中的几个括号总结(小括号/大括号/ ...
- shell中的括号(小括号,大括号/花括号)
在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下: 1.${var} 2.$(cmd) 3.()和{} 4.${var:-string},${var:+str ...
- shell中的括号(小括号,大括号/花括号)的使用方法
在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下: 1.${var} 2.$(cmd) 3.()和{} 4.${var:-string},${var:+str ...
- shell 中的括号(小括号,花括号)
链接:http://my.oschina.net/xiangxw/blog/11407 在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下: 1.${var} 2. ...
- shell中各种括号的作用详解()、(())、[]、[[]]、{}(推荐)
一.小括号,圆括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号, ...
- linux shell中的各种括号的使用方法
在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下: 1.${var} 2.$(cmd) 3.()和{} 4.${var:-string},${var:+str ...
- Linux Shell脚本攻略:shell中各种括号()、(())、[]、[[]]、{}的作用
技巧小结: 字符串比较用双中括号[[ ]]:算数比较用单中括号[ ]--左右留空格 算数运算用双小括号(( )) :shell命令及输出用小括号( )--左右不留空格 快速替换用花括号{ }--左右留 ...
最新文章
- 老码农揭开行业黑幕:如何编写无法维护的代码
- docker 启动petalinux镜像脚本
- opencv+python机读卡识别(四)百度API进行数字识别
- npoi 设置单元格不能修改_真巧妙!没密码也能解锁 Excel 单元格保护
- php性能需求,PHP语言性能考察
- 写出完美CSS代码的5个重要方面
- 本地邮件服务器 易邮 使用
- 电路分析之正弦稳态电路的仿真与研究
- 2020考研分数线计算机专业,2020考研分数线如何划定
- 胡昊—第7次作业--访问权限、对象使用
- [vijos 1770]大内密探
- 4G模块加网流程_4G拨号上网相关知识
- ARM_NEON_CNN编程 SIMD单指令多数据流 intrinsics指令 内联汇编 CNN卷积网络优化 深度学习优化
- 【数据挖掘与商务智能决策】第十七章 神经网络
- 上面两点下面一个三角形_一个调和线束的证明
- 专享 IP 与共享 IP:差异、优势及其影响
- 蓝牙协议栈HFP SCO连接流程
- 产品经理的六大工作职责
- Sphinx全文索引搜索常见的一些错误处理收集
- 什么是SEO?搜索引擎优化是什么意思?