搜索
简帛阁>技术文章>Bash中的括号(三)

Bash中的括号(三)

1、两个小括号用来对整数进行算术运算和逻辑运算,比如

例如给变量赋值:

$ a=1+1; echo $a
1+1
$ (( b = 1 + 1 )); echo $b
2

1+1 只是一个字符串,而 b 就是一个算术表达式结果。

正是因为是算术表达式,所以比较也是按数字本身而不是字符串:

$ (( 3 > 1 )); echo $?
0
$ (( 3 > 6 )); echo $?
1
$ (( 3 > 10 )); echo $?
1

所以也可以套上 if 语句来用:

[root@noi ~]# if((3>1))
> then
> echo "right,3>1"
> fi
right,3>1
[root@noi ~]# a=3;b=10
[root@noi ~]# if((a>b));then
> echo "$a > $b"
> else
> echo "$a < $b"
> fi
3 < 10

 2、(())还具有C语言类型变量增减的功能。如:

[root@noi ~]# a=2
[root@noi ~]# ((a++))
[root@noi ~]# echo $a
3

3、只要括号中的运算符、表达式符合C语言运算规则,都可用在$((exp))中,甚至是三目运算符。作不同进位(如二进制、八进制、十六进制)运算时,

输出结果全都自动转化成了十进制。如:

[root@noi ~]# echo $((16#5f))
95

4、双括号中的变量可以不使用$符号前缀。括号内支持多个表达式用逗号分开。

#这个i不用$,是因为这里是定义,而不是使用
[root@noi ~]# for i in $(seq 100) > do
#因为i在双括号中,可以省掉$,可以看出shell也是挺人性化的,只要不是为了填坑,尽量方便大家哦。
> if((i%12==0));then > echo $i > fi > done 12 24 36 48 60 72 84 96

看到没?有的加了$,有的却不需要,但是原谅bash吧,它的奇怪行为大多为了填坑补洞。

上面的式子用for写:

[root@noi ~]# for((i=0;i<100;i++))
> do
>    if((i%12==0))
>    then
>       echo $i
>    fi
> done
0
12
24
36
48
60
72
84
96

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  

先写到这里,特别感谢:

http://blog.csdn.net/tttyd/article/details/11742241

http://blog.csdn.net/xibeichengf/article/details/51226052

http://blog.csdn.net/u012598668/article/details/42236427

1、两个小括号用来对整数进行算术运算和逻辑运算,比如。例如给变量赋值:$a1+1;echo$a1+1$((b1+1));echo$b21+1只是一个字符串,而b就是一个算术表达式结果。正是因为是算术表
初学Bash脚本编程,里面的各种括号,绝对是一个大坑,为了救人救己,以防再度入坑,特记录如下:一、单小括号:1、创建子Shell。单个小括号用来创建一个子shell,子shell允许你在不影响当前sh
双方括号[[]]的用法:1、先举个例子说明:假如你要再判断某个目录是否存在,又想当然写成:$[fexiststxtdexists_folder];echo$?bash:[:missing`]'2结果
空格,一个看不见的字符,很不起眼,很多人经常忽略它,导致代码出错,却还找不着北。先了解下bash中什么时候该用空格,什么时候不该用。1等号赋值两边不能有空格2命令与选项之间需要空格3管道两边空格可有可
在SegmentFault上看到又有人问起关于Shell里各种括号的问题。对于很多玩Shell的人,括号是个很尴尬的问题,用起来没问题,说起来不明白,我在这里总结一下BashShell几种括号的用法
目录示例讨论总结在Bash脚本中,我们经常需要引用变量或者命令的执行结果来作为文件的名字或者日志的输出,在脚本或者Shell中我们可以使用反引号或者括号()来获取到变量的内容示例示例1获取日期的输出
Bash内置了很多诸如ls、cd、mv这样的重要的命令,也有很多诸如grep、awk、sed这些有用的工具。但除此之外,其实Bash中还有很多可以起到胶水作用的标点符号,例如点号(、逗号(,
字符串切片:${var:offset:number}取字符串的最右侧几个字符:${var:lengh}注意:冒号后必须有一空白字符;基于模式取子串:${var*word}:其中word可以是指定的任意
Linux下无论如何都是要用到shell命令的,在Shell的实际使用中,有编程经验的很容易上手,但稍微有难度的是shell里面的那些个符号,各种特殊的符号在我们编写Shell脚本的时候如果能够用的好
Bash初始化文件交互式loginshell在下列情况下,我们可以获得一个loginshell:登录系统时获得的顶层shell,无论是通过本地终端登录,还是通过网络ssh登录。这种情况下获得的logi