bash中的算術運算
+, -, *, /, %, **
實現算術運算:
(1) let var=算術表達式
(2) var=$[算術表達式]
(3) var=$((算術表達式))
(4) var=$(expr arg1 arg2 arg3 ...)
乘法符號有些場景中需要轉義;
bash有內建的隨機數生成器:$RANDOM
增強型賦值:
+=, -=, *=, /=, %=,++,--
條件測試:
判斷某需求是否滿足,需要由測試機制來實現;
Note: 專用的測試表達式需要由測試命令輔助完成測試過程;
測試命令:
test EXPRESSION
[ EXPRESSION ]
` EXPRESSION `
Note: EXPRESSION前後必須有空白字符;
bash的測試類型:
數值測試:
-gt: 是否大於;
-ge: 是否大於等於;
-eq: 是否等於;
-ne: 是否不等於;
-lt: 是否小於;
-le: 是否小於等於;
字符串測試:
==:是否等於;
>: 是否大於;
<: 是否小於;
!=: 是否不等於;
=~: 左側字符串是否能夠被右側的PATTERN所匹配;
Note: 此表達式一般用於[[ ]]中;
-z "STRING":測試字符串是否爲空,空則爲真,不空則爲假;
-n "STRING":測試字符串是否不空,不空則爲真,空則爲假;
Note:用於字符串比較時的用到的操作數都應該使用引號;
文件測試:
存在性測試
-a FILE
-e FILE: 文件存在性測試,存在爲真,否則爲假;
存在性及類別測試
-b FILE:是否存在且爲塊設備文件;
-c FILE:是否存在且爲字符設備文件;
-d FILE:是否存在且爲目錄文件;
-f FILE:是否存在且爲普通文件;
-h FILE 或 -L FILE:存在且爲符號鏈接文件;
-p FILE:是否存在且爲命名管道文件;
-S FILE:是否存在且爲套接字文件;
文件權限測試:
-r FILE:是否存在且可讀
-w FILE: 是否存在且可寫
-x FILE: 是否存在且可執行
文件特殊權限測試:
-g FILE:是否存在且擁有sgid權限;
-u FILE:是否存在且擁有suid權限;
-k FILE:是否存在且擁有sticky權限;
文件大小測試:
-s FILE: 是否存且非空;
文件是否打開:
-t fd: fd表示文件描述符是否已經打開且與某終端相關
-N FILE:文件自動上一次被讀取之後是否被修改過;
-O FILE:當前有效用戶是否爲文件屬主;
-G FILE:當前有效用戶是否爲文件屬組;
雙目測試:
FILE1 -ef FILE2: FILE1與FILE2是否指向同一個設備上的相同inode
FILE1 -nt FILE2: FILE1是否新於FILE2;
FILE1 -ot FILE2: FILE1是否舊於FILE2;
bash自定義退出狀態碼
exit [n]:自定義退出狀態碼;
注意:腳本中一旦遇到exit命令,腳本會立即終止;終止退出狀態取決於exit命令後面的數字;
注意:如果未給腳本指定退出狀態碼,整個腳本的退出狀態碼取決於腳本中執行的最後一條命令的狀態碼;