工作中經常需要寫shell腳本來處理一些重復的東西,使用腳本自動編譯,使用腳本多機器傳輸文件。
因為不是天天寫shell,只是用到的時候寫一個,再加上腳本中的if的判斷條件有點多,容易忘記,所以做個備忘錄,以備不時之需
先說一下 if 表達式的基本語法
if [ command ]; then
符合該條件執(zhí)行的語句
fi
if [ command ];then
符合該條件執(zhí)行的語句
elif [ command ];then
符合該條件執(zhí)行的語句
else
符合該條件執(zhí)行的語句
fi
注意:
- if 條件 要以
fi 結束
-
[] if語句中 和 表達式要注意空格
-
then 和 fi 是分開的語句。如果要在同一行里面輸入,則需要用分號將他們隔開
- 使用
-z 或者 -n 來檢查長度的時候,沒有定義的變量也為0
下面是常用表達式
數字判斷
| 表達式 |
含義 |
| int1 -eq int2 |
兩數相等為真 |
| int1 -ne int2 |
兩數不等為真 |
| int1 -gt int2 |
int1大于int2為真 |
| int1 -ge int2 |
int1大于等于int2為真 |
| int1 -lt int2 |
int1小于int2為真 |
| int1 -le int2 |
int1小于等于int2為真 |
邏輯相關
字符串相關
| 表達式 |
含義 |
| STRING |
當串str1為非空時為真 |
| -z STRING |
“STRING” 的長度為零則為真 |
| -n STRING |
“STRING” 的長度為非零 non-zero則為真 |
| STRING1 == STRING2 |
如果2個字符串相同則為真 |
| STRING1 != STRING2 |
如果字符串不相等則為 |
文件相關
| 表達式 |
含義 |
| -a FILE |
如果 FILE 存在則為真 |
| -b FILE |
如果 FILE 存在且是一個塊特殊文件則為真 |
| -c FILE |
如果 FILE 存在且是一個字特殊文件則為真 |
| -d FILE |
如果 FILE 存在且是一個目錄則為真 |
| -e FILE |
如果 FILE 存在則為真 |
| -f FILE |
如果 FILE 存在且是一個普通文件則為真 |
| -g FILE |
如果 FILE 存在且已經設置了SGID則為真 |
| -h FILE |
如果 FILE 存在且是一個符號連接則為真 |
| -k FILE |
如果 FILE 存在且已經設置了粘制位則為真 |
| -p FILE |
如果 FILE 存在且是一個名字管道(F如果O)則為真 |
| -r FILE |
如果 FILE 存在且是可讀的則為真 |
| -s FILE |
如果 FILE 存在且大小不為0則為真 |
| -t FD |
如果文件描述符 FD 打開且指向一個終端則為真 |
| -u FILE |
如果 FILE 存在且設置了SUID (set user ID)則為真 |
| -w FILE |
如果 FILE 如果 FILE 存在且是可寫的則為真 |
| -x FILE |
如果 FILE 存在且是可執(zhí)行的則為真 |
| -O FILE |
如果 FILE 存在且屬有效用戶ID則為真 |
| -G FILE |
如果 FILE 存在且屬有效用戶組則為真 |
| -L FILE |
如果 FILE 存在且是一個符號連接則為真 |
| -S FILE |
如果 FILE 存在且是一個套接字則為真 |
| FILE1 -ot FILE2 |
如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在則為真 |
| FILE1 -ef FILE2 |
如果 FILE1 和 FILE2 指向相同的設備和節(jié)點號則為真 |
| -o OPTIONNAME |
如果 shell選項 “OPTIONNAME” 開啟則為真 |
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。