2,shell 第二部分

算术运算符:(())
[root@node1 ~]# ((a=1+2))
[root@node1 ~]# echo $a
3
[root@node1 ~]# b=$((1+2+3))
[root@node1 ~]# echo $b
6
[root@node1 ~]#
在 (( )) 中 = 表示赋值, == 表示判断(整数比较),它们不等价,比如:
((n=5))
echo $n
((n==5)) && echo "equal"


[root@node1 ~]# echo $[2+3]
5
[root@node1 ~]#

[root@node1 ~]# read -t 5 -p "pls input:" a
pls input:1
[root@node1 ~]# echo $a
1
[root@node1 ~]#

let  i=i+8 等同于    ((i+8)) 

[root@node1 ~]# aa=ajax
[root@node1 ~]# echo $aa
ajax
[root@node1 ~]# echo $aa_AA

[root@node1 ~]# echo ${aa}_AA
ajax_AA
[root@node1 ~]#

shell中各种括号的作用()、(())、[]、[[]]、{}

$()和 ` `  

在 bash shell 中,$( ) 与` ` (反引号) 都可用做命令替换用。

${ } 

${ }用于变量替换。一般情况下,$var 与${var} 并没有什么不一样,但是用 ${ } 会比较精确的界定变量名称的范围。

$[ ] $(()) 

$[]和$(())是一样的,都是进行数学运算的。支持+ - * / %(“加、减、乘、除、取模”)。但是注意,bash只能作整数运算,对于浮点数是当作字符串处理的。

例如:

$ a=5; b=7; c=2

$ echo $(( a+b*c ))

19

$ echo $(( (a+b)/c ))

6

$ echo $(( (a*b)%c))

1

在 $(( )) 中的变量名称,可于其前面加 $ 符号来替换,也可以不用,如:

$(( $a + $b * $c)) 也可得到 19 的结果

此外,$(( )) 还可作不同进位(如二进制、八进位、十六进制)运算,只是,输出结果皆为十进制而已:

echo $((16#2a)) 结果为 42 (16进位转十进制)

---------------------

[ ] 

为test命令的另一种形式,但要注意:

1.必须在左括号的右侧和右括号的左侧各加一个空格,否则会报错。

2.test命令使用标准的数学比较符号来表示字符串的比较,而用文本符号来表示数值的比较。

3.大于符号或小于符号必须要转义,否则会被理解成重定向。

 

(( ))及[[ ]] 

分别是[ ]的针对数学比较表达式和字符串表达式的加强版。

其中

[[ ]]中增加模式匹配特效;

(( ))不需要再将表达式里面的大小于符号转义,除了可以使用标准的数学运算符外,还增加了以下符号:

 2,shell 第二部分

 

2,shell 第二部分

上一篇:Linux之centos系统命令三


下一篇:ubuntu16安装cuda,cudnn,gpu版opencv