BASH的算数扩展,有以下几种方法
一 运算符的优先级,基本上都一样。
二 算数扩展
[root@localhost shellscript]# vim netmask_2_bits.sh #! /bin/bash declare -i a i q s=0 a=${1:-255} mask="128 64 32 16 8 4 2 1" Bamp= echo $a echo "1 bits 128 64 32 16 8 4 2 1" for i in $mask do q=$((a/i)) ((s+=q)) [ $q -gt 0 ] && Bamp=$Bamp"_1_" || Bamp=$Bamp"_0_" a=$((a-q*i)) done echo " $s : $Bamp" ~
三 外部程序 expr 做算术运算
expr还有一个特殊的用法,就是查找字符串
查找字符串在母串中的字符数
r='expr "string" st' 或 r='expr match “”string“ st'
查找字符串在母串中的位置
r='expr index "string" in'
取母串中的子串根据起始位置
r='expr substr "string" 2 3'
计算字符串长度
r='expr length "string"'
将关键词当做一般词使用
r='expr + match'
r='expr + /'
四 使用$[]做算术运算
语法:r=$[算术式]
五 使用内置命令 declare 或 let 做算术运算
delcare 用法
例 delcare -i I 意思就是将I这个变量的属性设置成可运算,而非字符串
注意:
let 用法
let可以采用三元运算符。