各种括号的用法总结如下


1.Shell中变量的原形:${var}


大家常见的变量形式都是$var


2.命令替换$(cmd)


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


3.一串的命令执行()和{}


()和{}都是对一串的命令进行执行,但有所区别:


A,()只是对一串命令重新开一个子shell进行执行


B,{}对一串命令在当前shell执行


C,()和{}都是把一串的命令放在括号里面,并且命令之间用;号隔开


D,()最后一个命令可以不用分号


E,{}最后一个命令要用分号


F,{}的第一个命令和左括号之间必须要有一个空格


G,()里的各命令不必和括号有空格


H,()和{}中括号里面的某个命令的重定向只影响该命令,但括号外的重定向则影响到括号里的所有命令


4,几种特殊的替换结构:${var:-string},${var:+string},${var:=string},${var:?string}


5.POSIX标准的扩展计算:$((exp))


这种计算是符合C语言的运算符,也就是说只要符合C的运算符都可用在$((exp)),甚至是三目运算符和for语句。


注意:这种扩展计算是整数型的计算,不支持浮点型.若是逻辑判断,表达式exp为真则为1,假则为0。


6.四种模式匹配替换结构:${var%pattern},${var%%pattern},${var#pattern},${var##pattern}


这四种结构的意义是:${var%pattern}和${var%%pattern}表示从最右边(即结尾)匹配的,${var#pattern} 和${var##pattern}从最左边(即开头)匹配的。其中${var%pattern}和${var#pattern}是最短匹配,${var%%pattern}和${var##pattern}是最长匹配。只有在pattern中使用了通配符才能有最长最短的匹配,否则没有最长最短匹配之分。


7.[ 和 [[


$ type [ [[ test


[ is a shell builtin


[[ is a shell keyword


test is a shell builtin


各种引号的用法总结如下


1、 单引号 ‘


由单引号括起来的字符都作为普通字符出现。特殊字符用单引号括起来以后,也会失去原有意义,而只作为普通字符解释。


2、 双引号 “


由双引号括起来的字符,除$、\、’、和”这几个字符仍是特殊字符并保留其特殊功能外,其余字符仍作为普通字符对待。对于$来说,就是用其后指定的变量的值来 代替这个变量和$;对于而言,是转义字符,它告诉shell不要对其后面的那个字符进行特殊处理,只当作普通字符即可。可以想见,在双引号中需要在前面加 上的只有四个字符$,,’和”本身。而对”号,若其前面没有加,则Shell会将它同前一个”号匹配。


3、 反引号 `


反引号(`)这个字符所对应的键一般位于键盘的左上角,不要将其同单引号(’)混淆。反引号括起来的字符串被shell解释为命令行,在执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。