标签:
本文涉及的命令:test、[]、shift、if、case、for、while、until、function、sh。
============================================================================
() 和 {}的区别
这两个都是对一串命令的执行,但有些区别
1.()只是对一串命令重新开一个子进程进行执行
{}是在当前进程执行
2.()和{}内的命令都是以;隔开
()最后一个命令可以不用分号;
{}最后一个分号需要
3.()第一个命令不需要和括号间有空格
{}第一个命令和左边的括号间有空格
对于1:
$ var=10
$ (var=20;echo $var)
20
$ echo $var
10
说明()中执行的语句没有调用当前的变量,所以是在子进程中实现
$ var=30
$ { var=40;echo $var } #第一个要有空格哦
40
$ echo $var
40
说明var被修改了,是在同一个进程中实现
--------------------------------------------------------------------------------------------------------------------
2.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
-----------------------------------------------------------------------------------------------------------------------
标签:
原文地址:http://www.cnblogs.com/guojintao/p/5736025.html