shell筆記之運算子
阿新 • • 發佈:2018-10-31
利用(())進行運算
echo $(())
[[email protected]_ser ~]# echo $((1+3))
4
[[email protected]_ser ~]# echo $((1-3))
-2
變數運算輸出
[[email protected]_ser ~]# i=6
[[email protected]_ser ~]# echo $((i+1))
7
[[email protected]_ser ~]# echo $((i=i+5))
11
[[email protected] _ser ~]# echo $((i+=5))
16
[[email protected]_ser ~]# echo $i
16
i++ 先輸出變數的值再進行運算
[[email protected]_ser ~]# i=5
[[email protected]_ser ~]# echo $((i++))
5
[[email protected]_ser ~]# echo $i
6
++i 先進行運算再輸出變數的值
[[email protected]_ser ~]# i=5
[[email protected] _ser ~]# echo $((++i))
6
[[email protected]_ser ~]# echo $i
6
PS:別忘記$符號了哦
let 實現運算
[[email protected]_ser ~]# let i=1+1
[[email protected]_ser ~]# echo $i
2
PS:需要先將運算結果賦值給一個變數,輸出變數
declare 實現運算
[[email protected]_ser ~]# declare -i i=1+3 [[email protected]_ser ~]# echo $i 4
不要忘記了引數-i哦
expr實現運算
[[email protected]_ser ~]# expr 1 + 3
4
[[email protected]_ser ~]# expr 1+3
1+3
[[email protected]_ser ~]# i=1
[[email protected]_ser ~]# expr $i + 1
2
可以實現直接運算和變數輸出運算
PS:別忘記了空格喲
擴充套件功能
對整數資訊做判斷
[[email protected]_ser scripts]# cat sum.sh
a=$1
b=$2
expr $a + $b &>/dev/null
[ $? -ne 0 ] && {
echo pls input int
exit 1
}
echo $(($a+$b));
對字串長度進行判斷
[[email protected]_ser scripts]# cat sum1.sh
info=$1
real=$(expr length "$info")
[ $real -ne 18 ]&&{
echo "pls input right number, not 18 bit"
exit 1
}
echo "身份證號碼為:$info"
對檔名資訊進行判斷
有邏輯匹配方式
利用$[] 實現運算
[[email protected]_ser ~]# echo $[2*6]
12
[[email protected]_ser ~]# i=3
[[email protected]_ser ~]# echo $[i*3]
9
[[email protected]_ser ~]# echo $[i**3]
27
利用bc實現運算
整數運算
[[email protected]_ser scripts]# echo 1+2|bc
3
小數運算
[[email protected]_ser scripts]# echo 1.1+2|bc
3.1
利用awk實現運算
[[email protected]_ser ~]# echo 2.1 2.2 |awk '{print $1*$2}'
4.62
小練習
環境
[[email protected]_ser ~]# echo {1..10} >text.txt
[[email protected]_ser ~]# cat text.txt
1 2 3 4 5 6 7 8 9 10
奇數偶數求和運算
[[email protected]_ser ~]# awk '{for(i=1;i<=NF;i+=2)sum+=$i}END{print sum}' text.txt
25
[[email protected]_ser ~]# awk '{for(i=2;i<=NF;i+=2)sum+=$i}END{print sum}' text.txt
30