日常用到的就是整數(shù)和浮點(diǎn)數(shù)的運(yùn)算找爱,兩者都有很多方式實(shí)現(xiàn)膨更,各自記錄一種吧,因?yàn)閷懚嗔私稍剩乙灿洸蛔 U涞隆练般!?/p>
整數(shù)運(yùn)算 (())
1. 簡(jiǎn)單運(yùn)算
echo $(( 5 + 3 ))
8
echo $(( 5 / 3 ))
1
echo $(( 2 / 3 ))
0
a = 3; echo $(( ${a} + 3))
6
從上面例子可以知道,$(())只支持整數(shù)運(yùn)算锈候,如果相除的話薄料,只保留整數(shù),并且不會(huì)四舍五入泵琳。
2. 判斷
<
<=
==
!=
>=
>
% 取余
以上判斷摄职,若為真,返回1获列,假返回0. 可以利用這個(gè)小功能去做簡(jiǎn)單的判斷谷市。
整數(shù)計(jì)算expr
expr 5 + 5
10
str="123 456 789";expr substr "$str" 5 3
456
str="123 456 789"击孩;expr substr "$str" 5 3
456 789
echo ${#str}
11
$expr length "$str"
11
str="123 456 789"迫悠;expr index "$str" 9
11
str="123 456 789";expr index "$str" "a"
0
expr不僅可以進(jìn)行計(jì)算巩梢,還可以對(duì)字符串進(jìn)行取值创泄,語(yǔ)法為 expr substr "${str}" position
, 從匹配位置取到最后。expr substr "${str}" position length
, 從匹配位置取n個(gè)括蝠,坐標(biāo)都是從1開始的鞠抑。還可以計(jì)算字符串的長(zhǎng)度。還可以返回第一個(gè)匹配字符的索引忌警,如果沒(méi)找到搁拙,返回0。
浮點(diǎn)計(jì)算
echo "scale=3;4/5" | bc
0.800
a=0.355;printf "%.1f\n" "$a"
0.4 #可以使用printf進(jìn)行四舍五入, bc不會(huì)進(jìn)行四舍五入感混。
cat 1.txt
2 3
4 7
3 2
6 8
cat 1.txt | gawk '{printf "%.3f\n", $1/$2}'
0.667
0.571
1.500
0.750
cat 1.txt | gawk '{printf "%.2f\n", $1/$2}'
0.67
0.57
1.50
0.75
利用awk+printf,既可以四舍五入端幼,又可以格式刷輸出。
補(bǔ)充:printf
printf是echo 的加強(qiáng)版, printf 中使用格式化字符串弧满,還可以制定字符串的寬度婆跑、左右對(duì)齊方式等。默認(rèn) printf 不會(huì)像 echo 自動(dòng)添加換行符庭呜,我們可以手動(dòng)添加 \n滑进。以后可以多多使用~
語(yǔ)法:printf "string format" arguments
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
姓名 性別 體重kg
printf "%-s,%-s,%.2f\n" 郭靖 男 66.1234
郭靖,男,66.12
%s 代表字符型
%d 代表十進(jìn)制,我覺得可以理解為整數(shù)募谎?
%f 代表浮點(diǎn)數(shù)扶关。%.2f保留兩位小數(shù)
\n 換行
\t 是tab鍵,目前還不知道用途是什么
%-10s 指一個(gè)寬度為10個(gè)字符(-表示左對(duì)齊数冬,沒(méi)有則表示右對(duì)齊)节槐,任何字符都會(huì)被顯示在10個(gè)字符寬的字符內(nèi),如果不足則自動(dòng)以空格填充.
可以參考 (http://www.runoob.com/linux/linux-shell-printf.html)