Shell Script條件判斷詳解
Shell Script條件判斷
一、Shell 狀態(tài)和重定向
? shell 在執(zhí)行某個命令的時候,會返回兩個返回值:
? 命令的執(zhí)行結(jié)果
? 命令的執(zhí)行狀態(tài)
? 返回狀態(tài)保存到一個特殊變量:$? ,0表示執(zhí)行狀態(tài)成功。1-255表示執(zhí)行命令不成功。
? Shell 中命令的執(zhí)行返回狀態(tài)可以當(dāng)作一個條件測試表達式:
? 命令返回狀態(tài)為0:真
? 命令返回狀態(tài)為1-255:假
? 輸出重定向
? Shell中如果只想獲取命令的執(zhí)行返回狀態(tài),而不想看命令的執(zhí)行結(jié)果,怎么辦?
? ①覆蓋輸出重定向:>
# 覆蓋重定向 [root@localhost ~]# echo "abc" > abc.txt # 查看內(nèi)容 [root@localhost ~]# cat abc.txt abc
? ②追加輸出重定向:>>
# 追加重定向 [root@localhost ~]# echo "aaa" >> abc.txt # 查看內(nèi)容 [root@localhost ~]# cat abc.txt abc aaa
? ③錯誤信息覆蓋(追加)輸出重定向:2> 和2>>
# 錯誤覆蓋輸出 [root@localhost ~]# ls /opt/myfile &> abc.txt # 查看內(nèi)容 [root@localhost ~]# cat abc.txt ls: cannot access /opt/myfile: No such file or directory # 錯誤追加輸出 [root@localhost ~]# ls /opt/abc.txt &>> abc.txt # 查看內(nèi)容 [root@localhost ~]# cat abc.txt ls: cannot access /opt/myfile: No such file or directory ls: cannot access /opt/abc.txt: No such file or directory
? ④全部覆蓋(追加)輸出重定向:&> 和&>>
二、Shell邏輯操作符&&,||
? 邏輯與&&和邏輯或||操作符:
? cmd1 && cmd2
? 根據(jù)cmd1的執(zhí)行返回狀態(tài),如果cmd1為真,最后結(jié)果不能確定,cmd2會繼續(xù)執(zhí)行
? 根據(jù)cmd1的執(zhí)行返回狀態(tài),如果cmd1為假,最后結(jié)果已經(jīng)確定為假,cmd2不需執(zhí)行
? cmd1 || cmd2
? 根據(jù)cmd1的執(zhí)行返回狀態(tài),如果cmd1為真,最后結(jié)果已經(jīng)確定為真,cmd2不需執(zhí)行
? 根據(jù)cmd1的執(zhí)行返回狀態(tài),如果cmd1為假,最后結(jié)果不能確定,cmd2會繼續(xù)執(zhí)行
# 創(chuàng)建sh文件 [root@localhost ~]# vi myshell.sh # 寫入內(nèi)容 #!/bin/bash file="/opt/myfile/" [ -d $file ] && echo "$file 已經(jīng)存在" [ -d $file ] || echo "$file 不存在" # 運行結(jié)果 [root@localhost ~]# bash myshell.sh /opt/myfile/ 不存在
三、IF語句 一)Shell IF條件分支語句概述
? 幫助文檔:help if
? 屬于shell中的復(fù)合命令
? 從語法可以看出涉及COMMANDS,在之前的學(xué)習(xí)中已經(jīng)學(xué)習(xí)了不同用途的命令,都可以依據(jù)這些命令的執(zhí)行結(jié)果來判斷條件分支
? 語法:
? if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]… [ else COMMANDS; ] fi
? 中括號是可選的意思
? 分號可以使用換行符替代
? 根據(jù)判斷COMMANDS的退出狀態(tài)選擇:
? COMMANDS成功執(zhí)行:
? then COMMANDS
? COMMANDS執(zhí)行失?。?/p>
? elif COMMANDS
? elif是else if的簡寫,在shell中空白符比較敏感
? else COMMANDS
# 創(chuàng)建sh文件 [root@localhost ~]# vi myshell.sh # 寫入內(nèi)容 #!/bin/bash if [ $# -eq 1 ]; then echo "接收到一個參數(shù),他是$1" elif [ $# -ge 2 ]; then echo "接受到的參數(shù)大于等于2個,第二個參數(shù)為:$2" else echo "沒有接收到參數(shù)?。?!" exit 1 fi # 不傳遞參數(shù) [root@localhost ~]# bash myshell.sh 沒有接收到參數(shù)?。?! # 傳遞一個參數(shù) [root@localhost ~]# bash myshell.sh abc 接收到一個參數(shù),他是abc # 傳遞兩個參數(shù) [root@localhost ~]# bash myshell.sh abc abcd 接受到的參數(shù)大于等于2個,第二個參數(shù)為:abcd
到此這篇關(guān)于Shell Script條件判斷的文章就介紹到這了,更多相關(guān)Shell Script條件判斷內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Shell+Curl網(wǎng)站狀態(tài)檢查腳本 抓出無法訪問的站點
這篇文章主要介紹了Shell+Curl網(wǎng)站狀態(tài)檢查腳本 抓出無法訪問的站點,需要的朋友可以參考下2015-10-10Linux刪除指定字符串內(nèi)容及以前的字符串內(nèi)容\以后的字符串內(nèi)容(最新推薦)
這篇文章主要介紹了Linux刪除指定字符串內(nèi)容及以前的字符串內(nèi)容\以后的字符串內(nèi)容,本文給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-02-02Shell(())實現(xiàn)對整數(shù)進行數(shù)學(xué)運算
這篇文章主要介紹了Shell(())實現(xiàn)對整數(shù)進行數(shù)學(xué)運算,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03