shell腳本if條件判斷
① shell腳本中: if [ -f /FileA -a -O /FileB ]; then 語句中判斷條件怎麼理解,邏輯關系是什麼
-a是and,左右條件兩者都成立
-o是or,左右條件任意一條成立
② shell腳本中 if 判斷時候-s是什麼意思
指的是文件大小非0時為真。
③ UNIX/linux shell腳本 if語句的幾個案例
if [條件測試1] && (||) [條件測試2]; //以if為起始,後面可以接若
then //干個判斷式,使用&&或||
第一段程序執行內容
elif [條件測試3] && (||) [條件測試4]; //第二段的判斷,如果第一
then //段沒有符合就來此搜尋條件
第二段程序執行內容
else //當前兩段都不符合時,就以這段內容來執行。
第三段程序執行內容
fi //結束if then的條件判斷
-------------------------------------------------------------------------------------------------
#!/bin/sh
echo -n 「Please input the answer;」 //-n不換行
read Input
if [ $Input = y ]
then
echo "The answer is right"
elif [ $Input = n ]
then
echo "The answer is wrong"
else
echo "Bad Input"
fi
# end
④ Shell 腳本 if 判斷後,怎麼終止當前腳本但不退出 shell
代碼如下:
if list then
do something here
elif list then
do another thing here
else
do something else here
fi
EX1:
復制代碼代碼如下:
#!/bin/sh
SYSTEM=`uname -s` #獲取操作系統類型,我本地是linux
if [ $SYSTEM = "Linux" ] ; then #如果是linux的話列印linux字元串
echo "Linux"
elif [ $SYSTEM = "FreeBSD" ] ; then
echo "FreeBSD"
elif [ $SYSTEM = "Solaris" ] ; then
echo "Solaris"
else
echo "What?"
fi #ifend
基本上和其他腳本語言一樣。沒有太大區別。不過值得注意的是。[]裡面的條件判斷。
⑤ Shell腳本中的if和case邏輯判斷
在shell腳本中,if邏輯判斷的基本語法為:
例如:
需要注意的是shell的判斷語句也有特殊的格式,例如(($a<60)),必須有兩層括弧。此外還可以使用[]的形式,但是不能用>、<這些關系運算符了,使用[]的對應符號如下(注意'['的右邊和']'的左邊時必須留出空格):
Shell腳本中還經常用if來判斷文檔的屬性,具體格式為:
參數-e是判斷文件是否存在的,其他常用參數如下:
使用case的語法為:
case結構不限制value的個數,*代表所有其他值。下面是一個示例腳本,用來判斷奇數還是偶數:
參考: 跟阿銘學Linux(第2版)
⑥ shell編程(條件判斷舉例)
shell 是操作系統的最外層。shell 合並編程語言以控制進程和文件,以及啟動和控制其它程序。shell 通過提示您輸入,向操作系統解釋該輸入,然後處理來自操作系統的任何結果輸出來管理您與操作系統之間的交互。
外文名
shell
類別
操作系統
應用
編程技術
常見
在ARM技術里有很廣的應用
快速
導航
實現方法
編程步驟
常用技巧
編程過程
課程大綱
基本概述
shell 提供了與操作系統通信的方式。此通信以交互的方式(來自鍵盤的輸入立即操作)或作為一個 shell 腳本執行。shell 腳本是 shell 和操作系統命令的序列,它存儲在文件中。
當登錄到系統中時,系統定位要執行的 shell 的名稱。在它執行之後,shell 顯示一個命令提示符。普通用戶的此提示符通常是一個 $(美元符)。當提示符下輸入命令並按下 Enter 鍵時,shell 對命令進行求值,並嘗試執行它。取決於命令說明,shell 將命令輸出寫到屏幕或重定向到輸出。然後它返回命令提示符,並等待您輸入另一個命令。
命令行是輸入所在的行。它包含 shell 提示符。每行的基本格式如下:
$ 命令參數(一個或多個)
shell 視命令行的第一個字(直到第一個空白空格)為命令,所有後繼字為自變數。
在Windows環境下,不論是使用Visual C++還是Delphi或是其他一些軟體開發工具開發的應用程序,盡管存在著差別,但有一點是相同的:都是運行於Windows操作系統之下的。在程序開發過程中也經常要在自己的應用程序中加入一些Windows系統本身就有的功能,比如文件的拷貝、刪除、查找以及運行程序等等。而這些功能在Windows操作系統下都是具備的,顯然如果能直接從系統中調用這些功能將不僅僅減少程序的大小和開發人員的工作量,而且由於是直接通過操作系統來完成這些功能,將會大大減小這部分程序出現異常錯誤的概率。Windows系統雖說也存在不少錯誤,但常用功能的錯誤還是比較少的,而且通過補丁程序可以更低限度減少系統錯誤,因此程序員可以將調試檢錯的注意力放在應用程序的其他地方,對於調用系統功能這部分代碼則可以不必投入太大的精力去調試,因為這部分調試的工作在操作系統發布的時候就已經由微軟做好了。本文通過外殼編程,實現了搜尋文件、運行程序、控制工具條、最大最小化窗口的功能。
實現方法
前面所說的直接使用Windows操作系統部分功能的編程方法就是針對Windows操作系統外殼的編程,可以通過對操作系統提供的幾個編程介面對操作系統的部分功能進行調用,甚至可以按照自己的意圖在應用程序中對部分功能進行修改、擴展。但這方面的資料介紹不是特別多,講的也大都語焉不詳,而且用通常的編程方法去進行外殼編程是非常麻煩的,動輒就要對相關的結構對象進行設置,而這樣的結構里的數據成員少則十來個多則幾十個,因此配置起來非常煩瑣,下面就以一個比較簡單的外殼操作--拷貝文件進行舉例說明:
……
SHFILEOPSTRUCT FileOp; //外殼的文件操作結構
FileOp.hwnd=m_hWnd; //設置句柄
//設置操作方式,拷貝用FO_COPY,刪除用 FO_DELETE
FileOp.wFunc=FO_COPY;
FileOp.pFrom=m_source; //源文件路徑
FileOp.pTo=m_detect; //目標文件路徑
FileOp.fFlags=FOF_ALLOWUNDO; //允許恢復
FileOp.hNameMappings=NULL;
FileOp.lpszProgressTitle=strTitle; //設置標題
SHFileOperation(&FileOp); //執行外殼拷貝
if(FileOp.fAnyOperationsAborted) //監測有無中止
TRACE("An Operation was aborted!!!\n");
……
謝謝