利用bash腳本編程實現算數運算:node
+,_,*,/shell
%:模運算,取餘數編程
**|^sbash
加強型的算數運算符號:ide
+=測試
_=spa
*=進程
/=字符串
%=it
特殊的加強型算數運算:
let B=B+1
let B=B-1
B++:現將B的值賦給其餘變量,再自身加1
++B:先加1,再賦值出去
ae
算數運算方法:
1,let VAR=算數表達式 (將算數表達式先進性算術運算,並將運算獲得的結果保存到變量VAR中)
2,VAR=$[算數表達式]
算數表達式中若是有變量引用,可使用$引用,也能夠省略$
SUM=$[C+B]至關於SUM=$[$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:被測試的兩個數值,左邊的是否小於等於右邊的,小於等於爲真,大於爲假
例子:~/aaa的大小是否小於1000字節
2,字符串測試
雙目操做符:
==|=:被測試的兩個字符串是否相同,相同爲真,不一樣爲假
!=:被測試的兩個字符串是否不相同,不一樣爲真,相同爲假
>:被測試的兩個字符串在ASCII碼錶中對應的二進制數值左邊是否大於右邊,大於爲真,不大於爲假
<:被測試的兩個字符串在ASCII碼錶中對應的二進制數值左邊是否小於右邊,小於爲真,不小於爲假
注意:<和>必須用在`EXPRESSION`中
=~:被測試的兩個字符串,左側字符串可否被右側的PATTERN匹配,若是能匹配,則爲真,不能則爲假;
單目操做符:
-z "STRING":判斷指定字符串是否爲空串,空位真,不空爲假
-n"STRING":判斷指定字符串是否爲非空字符串,非空爲真,空爲假
注意:
1, 一般狀況下,字符串要加引號,單引號雙引號都行,根據實際狀況選擇;
2,[],[[]]在某些狀況下,可能意義不一樣,要區分使用;
3,表達式兩端和操做符兩端都應有空格;
3,文件狀態測試
單目測試:
1, 文件存在性測試: 若是被測試的文件存在則爲真,不存在則爲假;
-a|-e
2,文件類型測試(先測試存在性):
-b FILE:被測試的文件是否存在而且爲塊設備;
-c FILE:被測試的文件是否存在而且是否爲字符設備;
-d FILE:被測試的文件是否存在而且是否爲目錄文件
-f FILE:被測試的文件是否存在而且是否爲普通文件
-h | -L FILE:被測試的文件是否存在而且是否爲符號連接文件
-p FILE:被測試的文件是否存在而且是否爲管道文件
-s FILE:被測試的文件是否存在而且是否爲套接字文件
3,文件的訪問權限測試:
-r FILE:被測試的文件是否存在而且當前有效用戶可讀
-w FILE:被測試的文件是否存在而且當前有效用戶可寫
-x FILE:被測試的文件是否存在而且當前有效用戶可執行
4,文件的特殊權限標識測試:
-u FILE:被測試的文件是否存在而且是否設置了SUID權限
-g FILE:被測試的文件是否存在而且是否設置了SGID權限
-k FILE:被測試的文件是否存在而且是否設置了STICKY權限
5,文件的全部權測試:
-O FILE:被測試的文件是否存在且其屬主是否爲當前有效用戶
-G FILE:被測試的文件是否存在且其屬組是否爲當前有效用戶的組
6,文件內容是否爲空測試:
-s FILE:被測試的文件是否存在且內容不空,不空爲真,空爲假
7,時間戳測試:
-N FILE:被測試的文件自從上一次被修改後,是否被修改過;
雙目測試:
FILE1 -ef FILE2:測試兩個文件是否指向同一個文件系統的相同inode的硬連接;
FILE1 -nt FILE2:被測試的兩個文件,FILE1是否比FILE2更新;
FILE1 -ot FILE2::被測試的兩個文件,FILE1是否比FILE2更舊
測試語句中能夠添加邏輯運算:
第一種表達方式:
[-O /tmp/test] && [ -s /tmp/test]
[-O /tmp/test] || [ -s /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後面的命令都再也不被解釋執行;