linux中()、[]、{}、(())、[[]]等各种括号的使用

2017-12-21  本文已影响0人  道无虚

linux中()、[]、{}、(())、[[]]等各种括号的使用

1、小括号、圆括号()

1.1 单小括号()

1.2 双小括号(())

1.3 简单测试

[root@localhost ~]# for ((i=0;i<5;i++));do echo -n $i;done 
[root@localhost ~]# for i in $(seq 0 4);do echo -n $i;done
[root@localhost ~]# for i in `seq 0 4`;do echo -n $i;done

01234

2、中括号、方括号[]

2.1 单中括号[]

2.2 双中括号[[]]

2.3 简单测试

[root@localhost ~]# [[ 2\<3 ]] && echo true || false
true
[root@localhost ~]# [[ 2 -lt 3 ]] && echo true || false
true
[root@localhost ~]# [[ 2 \< 3 ]] && echo true || false
-bash: 期待二元条件运算符
-bash: `\<' 附近有语法错误
[root@localhost ~]# [ 2 \< 3 ] && echo true || false
true
[root@localhost ~]# [ 2 < 3 ] && echo true || false
-bash: 3: 没有那个文件或目录

3、大括号、花括号{}

3.1常规用法

3.2 几种特殊的替换结构

[root@localhost ~]# a=2
[root@localhost ~]# echo $a
2
[root@localhost ~]# echo ${a:-123}
2
[root@localhost ~]# echo ${b:-123}
123

[root@localhost ~]# echo ${b:=123}
123
[root@localhost ~]# echo $b
123

[root@localhost ~]# echo ${b:+123}
123
[root@localhost ~]# echo ${c:+123}

tips:在上面替换结构中string不一定是常值的,可用另外一个变量的值或是一种命令的输出。

3.3 四种模式匹配替换结构

# 是去掉左边(在键盘上#在$之左边)
% 是去掉右边(在键盘上%在$之右边)
#和%中的单一符号是最小匹配,两个相同符号是最大匹配。

tips:这四种模式中都不会改变variable的值,其中,只有在pattern中使用了*匹配符号时,%和%%,#和##才有区别。结构中的pattern支持普通正则通配符,*表示零个或多个任意字符,?表示仅与一个任意字符匹配,[...]表示匹配中括号里面的字符,[!...]表示不匹配中括号里面的字符。

[root@localhost ~]# var=testcase
[root@localhost ~]# echo $var
testcase
[root@localhost ~]# echo ${var%s*e}
testca
[root@localhost ~]# echo ${var%%s*e}
te
[root@localhost ~]# echo ${var#*s}
tcase
[root@localhost ~]# echo ${var##*s}
e

3.4 字符串的提取和替换

[root@localhost ~]# var=/home/wwwroot/
[root@localhost ~]# echo $var
/home/wwwroot/
[root@localhost ~]# echo ${var:5}
/wwwroot/
[root@localhost ~]# echo ${var: -5}
root/
[root@localhost ~]# echo ${var:1-5}
oot/
[root@localhost ~]# echo ${var:1:4}
home
[root@localhost ~]# echo ${var/o/oo/}
/hoo/me/wwwroot/
[root@localhost ~]# echo ${var/o/oo}
/hoome/wwwroot/
[root@localhost ~]# echo $var
/home/wwwroot/
[root@localhost ~]# echo ${var/o/oo}
/hoome/wwwroot/
[root@localhost ~]# echo ${var//o/oo}
/hoome/wwwroooot/

4、$符号后面的括号()

5、使用注意

上一篇 下一篇

猜你喜欢

热点阅读