shell中变量自增的计算方法
2015-06-04 16:59
639 查看
1. 运用 expr
# expr 10 + 10 ===> 20
# a=`expr 10 % 3`; echo $a ===> 1 注意:·· 为esc键盘下的
# b=10; b=`expr $b + 1` ===> 11 (实现了变量的自增1)
2. 运用 $[]
# echo $[ 10 + 10 ] ===> 20
# a=$[ 10 % 1]; echo a ===> 1
# b=10; b=$[ $b + 1 ];echo b ===> 11 (实现了变量的自增1)
变量的自增操作还可以这样实现:
# c=100
# let c+=1 ===> 101
expr
求表达式变量的值。 保证 参数与运算符号中间有空格隔开
也可以使用 $(()) 将表达式放在括号中,即可达到运算的功能。
let
let 是 bash 内建的整数运算
有了双括号运算符:[[ ]], [ ],,以及let,expr 都可以抛到一边了。
# expr 10 + 10 ===> 20
# a=`expr 10 % 3`; echo $a ===> 1 注意:·· 为esc键盘下的
# b=10; b=`expr $b + 1` ===> 11 (实现了变量的自增1)
2. 运用 $[]
# echo $[ 10 + 10 ] ===> 20
# a=$[ 10 % 1]; echo a ===> 1
# b=10; b=$[ $b + 1 ];echo b ===> 11 (实现了变量的自增1)
变量的自增操作还可以这样实现:
# c=100
# let c+=1 ===> 101
[] 表达式 [root@localhost ~]# [ 1 -eq 1 ] && echo 'ok' ok [root@localhost ~]# [ 2 < 1 ] && echo 'ok' -bash: 2: No such file or directory [root@localhost ~]# [ 2 \< 1 ] && echo 'ok' [root@localhost ~]# [ 2 -gt 1 -a 3 -lt 4 ] && echo 'ok' ok [root@localhost ~]# [ 2 -gt 1 && 3 -lt 4 ] && echo 'ok' -bash: [: missing `]' 注意:在[] 表达式中,常见的>,<需要加转义字符,表示字符串大小比较,以acill码 位置作为比较。 不直接支持<>运算符,还有逻辑运算符|| && 它需要用-a[and] –o[or]表示
[[]] 表达式 [root@localhost ~]# [ 1 -eq 1 ] && echo 'ok' ok [root@localhost ~]$ [[ 2 < 3 ]] && echo 'ok' ok [root@localhost ~]$ [[ 2 < 3 && 4 > 5 ]] && echo 'ok' ok <span style="color:#808000;">注意:[[]] 运算符只是[]运算符的扩充。能够支持<,>符号运算不需要转义符,它还是以字符串比较大小。里面支持逻辑运算符:|| && </span>
expr
求表达式变量的值。 保证 参数与运算符号中间有空格隔开
也可以使用 $(()) 将表达式放在括号中,即可达到运算的功能。
let
let 是 bash 内建的整数运算
双括号用法 语法: ((表达式1,表达式2…)) 特点: 1、在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等。 2、在双括号结构中,所有变量可以不加入:“$”符号前缀。 3、双括号可以进行逻辑运算,四则运算 4、双括号结构 扩展了for,while,if条件测试运算 5、支持多个表达式运算,各个表达式之间用“,”分开
例子: a=1; b=2; c=3; ((a=a+1)); echo $a; a=$((a+1,b++,c++)); echo $a,$b,$c 结果 2 3,3,4 双括号结构之间支持多个表达式,然后加减乘除等c语言常用运算符都支持。如果双括号带:$,将获得表达式值,赋值给左边变量。
有了双括号运算符:[[ ]], [ ],,以及let,expr 都可以抛到一边了。
相关文章推荐
- Linux socket 初步
- android wifi 无线调试
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- 动态清空 nohup 输出文件
- install scrapy with pip and easy_install
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断
- 谁是桌面王者?Win PK Linux三大镇山之宝