利用bash腳本編程實現算數運算:(bc 計算器)node
+、/shell
*、/編程
% 模運算,取餘數bash
**|^ide
加強型的算術運算符號:測試
+= : let B=B+2 --> let B+=2進程
-= : let B=B-2 --> let B-=2字符串
*= : let B=B*2 --> let B*=2it
/= : let B=B/2 --> let B/=2class
%= : let B=B%2 --> let B%=2
特殊的加強型算術運算:
let B=B+1 --> let B+=1 --> let B++
let B=B-1 --> let B-=1 --> let B--
B++ :先將B的值賦給其餘變量,再給B自身加1
++B :先將B自身加一,再講加1後的值賦給其餘變量。
算數運算方法:
1.let VAR=算數表達式
將算術表達式先行進行算術運算,並將運算獲得的結果保存到變量VAR中;
2.VAR=$[算術表達式]
算術表達式中若是有變量引用,可使用$引用,也能夠省略$;
SUN=$[C+B] 至關於 SUN=$[$C+$B]
3.VAR=$((算數表達式))
算術表達式中若是有變量引用,可使用$引用,也能夠省略$;
4.expr ARGU1 ARGU2 ARGU3
ARGU1 ARGU3 必須是數值;
ARGU2必須是運算符號
5.echo「算數表達式」 | bc
注意:*號,在某些狀況下,,須要轉義。
變量:存儲數據的一個容器
弱變量:弱類型的變量,字符型(默認),數值型(只包括整型不包括浮點型)
條件測試命令:
test EXPRESSION:
shell內建命令:
[EXPRESSION]
外部命令:
`EXPRESSION`
bash的內部關鍵字:
注意:這類命令通常沒有執行結果,只有執行狀態返回值;
test測試命令有三類測試表達式:
1.數值測試:雙目操做符
-eq:被測試的兩個數值是否相等,相等爲真,不等爲假。
-ne:被測試的兩個數值是否不相等,不等爲真,相等爲假。
-gt:被測試的兩個數值,左邊的是否大於右邊的,大於爲真,不大於爲假。
-lt:被測試的兩個數值,左邊的是否小於右邊的,小於爲真,不小於爲假。
-ge:被測試的兩個數值,左邊的是否大於等於右邊的,大於等於爲真,小於爲假。
-le:被測試的兩個數值,左邊的是否小於等於右邊的,小於等於爲真,大於爲假。
2.字符串測試
雙目操做符:
==|=:被測試的兩個字符串是否相同,相同爲真,不一樣爲假。
!=:被測試的兩個字符串是否不一樣,不一樣爲真,相同爲假。
>:被測試的兩個字符串在ASCII碼錶中對應的二進制數值,左邊的是否大於右邊,大於爲真,小於爲假。
<:被測試的兩個字符串在ASCII碼錶中對應的二進制數值,左邊的是否小於右邊,小於爲真,大於爲假。
注意:> < 必須在`EXPRESSION`測試語句中;
=~:被測試的兩個字符串,左側字符串可否被右側的PATTERN匹配,能匹配爲真,不能匹配爲假。
單目操做符:
-z ‘STRING’:判斷指定的字符串是否爲空串,空爲真,不空爲假。
-n ‘STRING’:判斷指定的字符串是否爲非空串,非空爲真,空爲假。
注意:
1.一般狀況下,字符串要加引號,單引號或雙引號都行,,根據實際狀況選擇便可。
2.[[]]和[]在某些狀況下,可能意義不一樣,要區分。
3.表達式兩端以及操做符兩端都要有空格。
3.文件狀態測試
文件存在性測試:若是被測試的文件存在爲真,不存在則爲假。
-a | -e
[ -e /backup ]
文件類型測試(先測試存在性):
-b FILE:被測試的文件是否存在而且是否爲塊設備;存在且爲塊設備爲真,不然爲假。
-c FILE:被測試的文件是否存在而且是否爲字符設備;...
-d FILE:被測試的文件是否存在而且是否爲目錄文件;...
-f FILE:被測試的文件是否存在而且是否爲普通文件。...
-h|-L FILE:被測試的文件是否存在而且是否爲符號連接文件。...
-p FILE:被測試的文件是否存在而且是否爲管道文件。。...
-S FILE:被測試的文件是否存在而且是否爲套接字文件。...
文件的訪問權限測試:
-r FILE:被測試文件是否存在而且當前有效用戶是否可讀。文件存在而且當前有效用戶可讀爲真,。。
-w FILE:被測試文件是否存在而且當前有效用戶是否可寫。。。。。。。
-x FILE:被測試文件是否存在而且當前有效用戶是否可執行。。。。。。。
文件的特殊權限標識測試:
-u FILE :被測試的文件是否存在而且是否設置了SUID權限,文件存在而且設置了SUID權限爲真,不然假
-g FILE :被測試的文件是否存在而且是否設置了SGID權限,文件存在而且設置了SGID權限爲真,不然假
-k FILE :被測試的文件是否存在而且是否設置了STICKY權限,文件存在而且設置了STICKY權限爲真,不然假
文件的全部權測試:
-O FILE:被測試的文件是否存在而且其屬主是否爲當前有效用戶。
-G FILE:被測試的文件是否存在而且其屬組是否爲當前有效用戶的組。
文件內容是否爲空:
-s FILE:被測試的文件是否存在且內容不爲空,存在爲真,不然爲假。
時間戳測試:
-N FILE:被測試的文件自從上一次被修改以後,是否被修改過;
雙目測試:
FILE -ef FILE2:測試兩個文件是否指向同一個文件系統的相同inode的硬連接;
FILE -nt FILE2:被測試的兩個文件,FILE1是否比FILE2更新;
FILE -ot FILE2:被測試的兩個文件,FILE1是否比FILE2更舊;
測試語句中能夠添加邏輯運算:
第一種表達方式:
[ -O /tmp/test ] && [ -s /tmp/test
[ -O /tmp/test ] || [ -s /tmp/test]
! [ -O /tmp/test ]
第二種表達方式:
[ -O /tmp/test -a -s /tmp/test ]
[ -O /tmp/test -o -s /tmp/test ]
[ ! -O /tmp/test ]
命令的執行結果;
正常的輸出結果
命令的執行狀態返回值:
0-255
0:表示命令執行成功
1.2.127:系統保留的
3-126,128-255:用戶自定義的執行狀態返回值;
exit [#]
退出當前shell的登陸。
當shell腳本運行時,一旦遇到exit命令,將馬上結束當前shell進程,同時腳本的運行也將被中止,即exit後面的全部命令都不會被解釋執行。