Shell最全大括号{}、中括号[]、小括号()用法实例
1、大括号{ }用法实例
1)纯{ }用法
拓展功能:例如:ls {name1,name2}.sh ;touch {1..3}.sh
代码组织功能:例如:多条命令在当前shell中执行 { cmd1;cmd2;cmd3;},注意cmd1与{之间有空格,cmd3后边有;
2)$结合{ }用法
取值拓展功能:例如:var=dreamer;echo ${var}way 此条语句输出dreamerway
替换结构:${var:-string},${var:+string},${var:=string},${var:?string}
A,${var:-string}和${var:=string}:若变量var为空,则用在命令行中用string来替换${var:-string},否则变量var不为空时,则用变量var的值来替换${var:-string};对于${var:=string}的替换规则和${var:-string}是一样的,所不同之处是${var:=string}若var为空时,用string替换${var:=string}的同时,把string赋给变量var: ${var:=string}很常用的一种用法是,判断某个变量是否赋值,没有的话则给它赋上一个默认值。
B. ${var:+string}的替换规则和上面的相反,即只有当var不是空的时候才替换成string,若var为空时则不替换或者说是替换成变量 var的值,即空值。(因为变量var此时为空,所以这两种说法是等价的)
C,${var:?string}替换规则为:若变量var不为空,则用变量var的值来替换${var:?string};若变量var为空,则把string输出到标准错误中,并从脚本中退出。我们可利用此特性来检查是否设置了变量的值。
模式匹配替换结构:${var%pattern},${var%%pattern},${var#pattern},${var##pattern}
第一种模式:${variable%pattern},这种模式时,shell在variable中查找,看它是否一给的模式pattern结尾,如果是,就从命令行把variable中的内容去掉右边最短的匹配模式;
第二种模式: ${variable%%pattern},这种模式时,shell在variable中查找,看它是否一给的模式pattern结尾,如果是,就从命令行把variable中的内容去掉右边最长的匹配模式;
第三种模式:${variable#pattern} 这种模式时,shell在variable中查找,看它是否一给的模式pattern开始,如果是,就从命令行把variable中的内容去掉左边最短的匹配模式;
第四种模式: ${variable##pattern} 这种模式时,shell在variable中查找,看它是否一给的模式pattern结尾,如果是,就从命令行把variable中的内容去掉右边最长的匹配模式;
这四种模式中都不会改变variable的值,其中,只有在pattern中使用了*匹配符号时,%和%%,#和##才有区别。结构中的pattern支持通配符,*表示零个或多个任意字符,?表示零个或一个任意字符,[...]表示匹配中括号里面的字符,[!...]表示不匹配中括号里面的字符。
2、中括号[ ]用法实例
单中括号用于条件测试:"["是一个可执行程序,路径是"/usr/bin/[",
if [ $num1 -eq $num2 ] ; then 等价于 if /usr/bin/[ $num1 -eq $num2 ] ; then
还等价于if test $num1 -eq $num2 ; then
单中括号用于数组:例如:输出数组全部元素echo ${array[@]}
双中括号:单中括号加强版 [[是 bash 程序语言的关键字,并不是一个命令,在单括号中是不可以用 || &&等关系运算符号的,只能用-a -o等等,例如[[ $arch_com = i386 || $ARCH = i*86 ]]
3、小括号( )用法实例
单括号代码组织功能:跟上边{}不同的是,此处命令块会在子shell中运行,例如:(cmd1;cmd2;cmd3) 这三条命令的执行不会影响当前的shell环境
单括号数组初始化功能:例如:array=(1 2 3 4 5)
双括号算术运算比较功能:例如:for((i=0;i<9;i++)) 如果不采用双括号可用
for i in `seq 0 9`或者for i in {0..9}代替
参考文献:
http://blog.csdn.net/tttyd/article/details/11742241
Shell最全大括号{}、中括号[]、小括号()用法实例相关推荐
- shell中的大括号和小括号
转载自:http://blog.sina.com.cn/s/blog_4a2a29f00100o2os.html 在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下: ...
- python 大括号中括号小括号的区分
python语言最常见的括号有三种,分别是:小括号( ).中括号[ ]和大括号也叫做花括号{ }.其作用也各不相同,分别用来代表不同的python基本内置数据类型. 1.python中的小括号( ) ...
- php正则表达式小括號,正则表达式中的小括号用法
正则表达式中的小括号用法 小括号中的连续字符作为可选: "Nov" -match "\bNov(ember)?\b" 返回true "Novembe ...
- python 小括号 运算_浅析python 中大括号中括号小括号的区分
python语言最常见的括号有三种,分别是:小括号( ).中括号[ ]和大括号也叫做花括号{ }.其作用也各不相同,分别用来代表不同的python基本内置数据类型. 1.python中的小括号( ): ...
- python中括号的作用_浅析python 中大括号中括号小括号的区分
python语言最常见的括号有三种,分别是:小括号( ).中括号[ ]和大括号也叫做花括号{ }.其作用也各不相同,分别用来代表不同的python基本内置数据类型. 1.python中的小括号( ): ...
- C++ 2.0新特性——大括号与小括号
C++ 2.0新特性--大括号与小括号 变量创建区分() 和 {} 1.大括号初始化可以应用的语境最为宽泛,可以阻止隐式窄化类型转换,若大括号内的表达式无法保证能够采用进行初始化的对象来表达,则代码无 ...
- 正则表达式中的小括号用法
小括号中的连续字符作为可选: "Nov" -match "\bNov(ember)?\b" 返回true "November" -m ...
- python中大括号是什么意思_浅析python 中大括号中括号小括号的区分
python语言最常见的括号有三种,分别是:小括号( ).中括号[ ]和大括号也叫做花括号{ }.其作用也各不相同,分别用来代表不同的python基本内置数据类型. 1.python中的小括号( ): ...
- 如果用计算机计算带有大括弧的数学题,紧急需要带有大括号,小括号,中括号的脱式计算题目...
时空之翼_2017 来自团队: 理科爱好者2017.08.16 采纳率:40% 等级:20 已帮助:20917人 { [(2+8)×(-1) ] + 5 }/2 = { [10×(-1) ] + ...
最新文章
- SAP PI 集成引擎
- Arduino可穿戴开发入门教程LilyPad和LilyPad Simple的介绍
- “女版乔布斯”被定罪!曾靠“一滴血”公司狂揽40亿,如今面临最高20年监禁...
- Vue中怎样引入Element
- 13-NSPersistentContainer性能比较
- C++ Bitsets
- SAP Spartacus 升级时关于 schematics 的更新
- vue利用级联选择器实现全国省市区乡村五级菜单联动
- QtCreate由MinGW编译的项目,换为MSVC编译器后编译无法通过
- 电路结构原理_精密半波、全波整流电路结构原理图解
- javascript使用事件委托
- EL与JSTL表达式代码示例
- [USACO 09FEB]Fair Shuttle
- 自定义TextView显示指定行数
- 转载子龙山人 cocos2d-x学习资源汇总(持续更新。。。)
- 如何把map的value转为list_如何在Java中将Map转换为List?
- pdf转换成word转换器免费下载
- Python实现微信自动发送消息
- 模拟器怎么安装xposed框架
- 【华为机试真题 JAVA】统计射击比赛成绩-100
热门文章
- Git 报错 error: pathspec ‘XXX‘ did not match any file(s) known to git 报错解决方法
- 目标定位算法(三)之基于角度的定位算法
- 乔布斯一个人的世界(一)
- 图灵完备 java_图灵完备是什么?
- 什么是保健品?保健品引流产品什么样的最好?
- CPU(AMD)2020.10购买推荐
- \t\t使用INDY的IdMappedPortTCP控件实现动态的HTTP代理服务器
- [LabVIEW]--通过LabVIEW打开计算机摄像头、图像显示、拍照。
- NOI 2021 游记题解总结
- 美团·北极星开发对接避坑指北(Java)