shell之小括号、中括号、大括号

1、Shell中变量的原形:${var}  一串命令的执行

#等价于
$ var=test
$ echo $var
test 

#例如,用在这个位置
$ echo ${var}AA
testAA 

2、命令替换$(cmd) 一串命令的执行

命令替换$(cmd)和符号`cmd`(注意这不是单引号,在美式键盘上,`是ESC下面的那个键)有相同之处

$ ls
a b c
$ echo $(ls)
a b c
$ echo `ls`
a b c 

我们来分析一下命令echo $(ls),以便理解所谓命令替换是什么意思:
shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令echo $(ls)中的$(ls)位置,即替换了$(ls),再执行echo命令。

()和{}都是对一串的命令进行执行,但有所区别:
A,()只是对一串命令重新开一个子shell进行执行
B,{}对一串命令在当前shell执行

3、POSIX标准的扩展计算:$((exp))  用于数学计算

这种计算是符合C语言的运算符,也就是说只要符合C的运算符都可用在$((exp)),甚至是三目运算符。
注意:这种扩展计算是整数型的计算,不支持浮点型.若是逻辑判断,表达式exp为真则为1,假则为0。

$ echo $((3+2))
5
$ echo $((3>2))
1
$ echo $((25<3 ? 2:3))
3
$ echo $var 

$ echo $((var=2+3))
5
$ echo $var
5
$ echo $((var++))
5
$ echo $var
6 

4、单中括号 []

bash 的内部命令, [ 和 test 是等同的。

Test和[]中可用的比较运算符只有==和!=,两者都是用于字符串比较的,不可用于整数比较,整数比较只能使用-eq,-gt这种形式。无论是字符串比较还是整数比较都不支持大于号小于号。

5、双中括号[[ ]]

[[是 bash 程序语言的关键字。使用[[ ... ]]条件判断结构。比如,&&、||、<和> 操作符能够正常存在于[[ ]]条件判断结构中,但是如果出现在[ ]结构中的话,会报错。

4、5例如:

if ($i<5)
if [ $i -lt 5 ]
if [ $a -ne 1 -a $a != 2 ]
if [ $a -ne 1] && [ $a != 2 ]
if [[ $a != 1 && $a != 2 ]]

for i in $(seq 0 4);do echo $i;done
for i in `seq 0 4`;do echo $i;done
for ((i=0;i<5;i++));do echo $i;done
for i in {0..4};do echo $i;done


首先,来看下shell中$与各种括号的结合:

$( )运行shell命令返回输出

如$(ls -a)

$(( )) 算术运算

如$(($a+$b))

$[] 算术运算

如$[$a+$b]

${ } 变量调用

如${$var}

再来看看单独使用的情况:

( ) 正则表达式中可以表示分组,并在后面通过\1,\2等调用

[ ] 测试表达式

[[ ]] 测试表达式

{ }可用于括起整个命令块

实在是不好记,于是,小林君又反过来总结变量调用、命令调用、测试表达式和算术运算的方法:

变量调用:

方法一:${var}

方法二:$var

命令调用:

方法一:`COMMAND`

方法二:$(COMMAND)

测试表达式:

方法一:[ expression ]

方法二:[[ expression ]]

方法三:test expression

算术运算

方法一:let 算术运算表达式

let C=$A+$B 这里变量A和B前面的$可以省略

方法二:$[算术运算表达式]

C=$[$A+$B]

方法三:$((算术运算表达式))

C=$(($A+$B))

方法四:expr 算术运算表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用,遇到乘法的*号还要转义

C=`expr $A + $B`

方法五:expr $[算术运算表达式],遇到乘法*号不用转义。

dd

时间: 2024-07-29 15:39:20

shell之小括号、中括号、大括号的相关文章

shell中的括号(小括号,大括号/花括号)

在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下: 1.${var} 2.$(cmd) 3.()和{} 4.${var:-string},${var:+string},${var:=string},${var:?string} 5.$((exp)) 6.$(var%pattern),$(var%%pattern),$(var#pattern),$(var##pattern) 现在分述如下: 1.Shell中变量的原形:${var} 大家常见的变量形式都是$va

php正则:匹配(),{},[]小括号,大括号,中括号里面的内容

比如有一段字符: $s='60c8 {"code":"200","message":"success","data":[{"_id":"780521","time":1476768196,"position":{"long":108.90415,"lat":35.25623},"

shell中的括号(小括号,中括号,大括号)

一.小括号,园括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格. ②命令替换.等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令.有些shell不支持,如tcsh. ③用于初始化数组.如:array=(a b c d) 2.双小括号 ((  )

shell中的大括号和小括号

一.小括号,园括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格. ②命令替换.等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令.有些shell不支持,如tcsh. ③用于初始化数组.如:array=(a b c d) 2.双小括号 (( ))

javascript小括号、中括号、大括号学习总结

作为一名编程人员,和括号打交道是必不可少的.你可知道在不同的上下文中,括号的作用是不一样的,今天就让我们简单总结下javascript小括号.中括号.大括号的用法. 总的来说,JavaScript中小括号有五种语义,中括号有四种语义,而大括号也有四种语义. 小括号: 语义1,函数声明时参数表(形参) 语义2,和一些语句联合使用以达到某些限定作用(if.for等) 语义3,和new一起使用用来传值(实参) 语义4,作为函数或对象方法的调用运算符(如果定义了参数也可与语义3一样传实参) 语义5,强制

正则表达式:小括号、中括号、大括号的区别

一.小括号().中括号[].大括号的区别 1>. 小括号():匹配小括号内的字符串,可以是一个,也可以是多个,常跟"|"(或)符号搭配使用,是多选结构的 示例1:string name = "way2014";  regex:(way|zgw)  result:结果是可以匹配出way的,因为是多选结构,小括号是匹配字符串的 示例2:string text = "123456789";  regex:(0-9) result:结果是什么都匹配

正则表达式中:小括号、中括号、大括号概述

1.小括号():匹配 小括号内的字符串,可以是一个,也可以是多个: 常跟“|”(或)符号配合使用. 例如  String text="123456789"; text.mathes("(0-9){9}")  ----false "0-9".mathes("(0-9)")  true 2.中括号:匹配字符组内的字符 例:[0-9] 代表0-9内的任意字符 "0".mathes([0-9]) true 3.大括

Html.Action Html.RenderAction Html.Partial Html.RenderPartial Url.Action Html.ActionLink 大括号和小括号区别

在查阅了一些资料后,结论如下: Action 是以mvchtmlstring的方式返回一个结果,RenderAction 无返回值,速度上action慢于RenderAction partial和RenderPatrial同理,但是和action相比,partial需要分页视图与主视图放在一个目录下,可以直接访问分部视图,action 却需要通过control访问视图,比partial多了一次请求 四者相同之处都是在当前页面中嵌入一个分部页面. url.Action返回一个地址,string类型

python中,花括号,中括号,小括号的区别

python中,花括号,中括号,小括号的区别 Python主要有三种数据类型:字典.列表.元组.其分别由花括号,中括号,小括号表示. 如: 字典:dic={'a':12,'b':34} 列表:list=[1,2,3,4] 元组:tup=(1,2,3,4) 至于这三者的具体区别,有很多介绍的,我就不在这里赘述了.