❶ linux shell ) 双括号运算符使用
估计很多朋友都感觉比较难以接受。特变逻辑运算符”[]”使用时候,必须保证运算符与算数 之间有空格。 四则运算也只能借助:let,expr等命令完成。 今天讲的双括号”(())”结构语句,就是对shell中算数及赋值运算的扩展。
使用方法:
语法:
((表达式1,表达式2…))
特点:
1、在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等。
2、在双括号结构中,所有变量可以不加入:“$”符号前缀。
3、双括号可以进行逻辑运算,四则运算
4、双括号结构 扩展了for,while,if条件测试运算
5、支持多个表达式运算,各个表达式之间用“,”分开
使用实例:
扩展四则运算
复制代码
代码如下:
#!/bin/sh
a=1;
b=2;
c=3;
((a=a+1));
echo $a;
a=$((a+1,b++,c++));
echo $a,$b,$c
运行结果:
sh testsh.sh
2
3,3,4
双括号结构之间支持多个表达式,然后加减乘除等c语言常用运算符都支持。如果双括号带:$,将获得表达式值,赋值给左边变量。
扩展逻辑运算
复制代码
代码如下:
#!/bin/sh
a=1;
b="ab";
echo $((a1?8:9));
((b!="a")) echo "err2";
((a2)) echo "ok";
运行结果:
sh testsh.sh
9
err2
ok
扩展流程控制语句(逻辑关系式)
复制代码
代码如下:
#!/bin/sh
num=100;
total=0;
for((i=0;i=num;i++));
do
((total+=i));
done
echo $total;
total=0;
i=0;
while((i=num));
do
((total+=i,i++));
done
echo $total;
if((total=5050));then
echo "ok";
fi
运算结果:
sh testsh.sh
5050
5050
ok
有了双括号运算符:[[]],[],test 逻辑运算,已经let,expr 都可以抛到一边了。
❷ linux shell:能从原理上给我讲讲为什么要写 ((a=$a+1))
a=3
假如不加两个括号,系统以为是字符串的形式,结果为
“3+1”,这个是字符串
加了两个括号,让系统知道了里面的值要进行运算,结果为
“4”
至于为什么加一个括号不行,是因为运算的格式就是要加两个括号
因为一个括号的格式代表其他的作用
❸ shell中单中括号和双中括号的区别
测试时,[ ]单中括号与test语句作用一样,双中括号可以支持更多的测试操作
用于正则表达式时,双中括号可以表示一类字符如[[:alpha:]]表示字母