導航:首頁 > 編程語言 > shell編程中的判斷

shell編程中的判斷

發布時間:2022-11-16 04:28:34

❶ shell編程中使用IF判斷

都正確
-ne是比較數字
!= 是比較字元串

if判斷分為三種條件判斷,整數判斷,字元串判斷。

❷ shell編程,輸入一個字元串,判斷是否是數字。

read a

if [[ $a =~ /-?[0-9][0-9.]+/]] ; then

echo 「$a is num」

fi

或:

|read -p "請輸入一個字元串" str

if echo "$str"|shugrep "[a-zA-Z]" >/dev/null &&echo "$str"|grep "[0-9]" >/dev/null

then

echo "yes"

else

echo "no"

fi

(2)shell編程中的判斷擴展閱讀:

字元串在存儲上類似字元數組,它每一位單個元素都是能提取的,字元串的零位是它的長度,如s[0]=10,這提供給我們很多方便,例如高精度運算時每一位都能轉化為數字存入數組。

通常以串的整體作為操作對象,如:在串中查找某個子串、求取一個子串、在串的某個位置上插入一個子串以及刪除一個子串等。兩個字元串相等的充要條件是:長度相等,並且各個對應位置上的字元都相等。設p、q是兩個串,求q在p中首次出現的位置的運算叫做模式匹配。串的兩種最基本的存儲方式是順序存儲方式和鏈接存儲方式。

❸ 用SHELL編程問題,如何判斷文件類型

應該是bash吧:腳本的寫法是這樣的:file_name=xxxxxxxif [ -d $file_name ]
then
echo "directory"
else
echo "not a directory"
fi 下面是全部參數,裡面就有你需要的:-a file exists.
-b file exists and is a block special file.
-c file exists and is a character special file.
-d file exists and is a directory.
-e file exists (just the same as -a).
-f file exists and is a regular file.
-g file exists and has its setgid(2) bit set.
-G file exists and has the same group ID as this process.
-k file exists and has its sticky bit set.
-L file exists and is a symbolic link.
-n string length is not zero.
-o Named option is set on.
-O file exists and is owned by the user ID of this process.
-p file exists and is a first in, first out (FIFO) special file or
named pipe.
-r file exists and is readable by the current process.
-s file exists and has a size greater than zero.
-S file exists and is a socket.
-t file descriptor number fildes is open and associated with a
terminal device.
-u file exists and has its setuid(2) bit set.
-w file exists and is writable by the current process.
-x file exists and is executable by the current process.
-z string length is zero.

❹ shell判斷文件,目錄是否存在或者具有許可權

#!/bin/sh
myPath="/var/log/httpd/"
myFile="/var /log/httpd/access.log"
#這里的-x 參數判斷$myPath是否存在並且是否具有可執行許可權
if [ ! -x "$myPath"]; then
mkdir "$myPath"
fi
#這里的-d 參數判斷$myPath是否存在
if [ ! -d "$myPath"]; then
mkdir "$myPath"
fi
#這里的-f參數判斷$myFile是否存在
if [ ! -f "$myFile" ]; then
touch "$myFile"
fi
#其他參數還有-n,-n是判斷一個變數是否是否有值
if [ ! -n "$myVar" ]; then
echo "$myVar is empty"
exit 0
fi
#兩個變數判斷是否相等
if [ "$var1" = "$var2" ]; then
echo '$var1 eq $var2'
else
echo '$var1 not eq $var2'
fi
========================================
shell 判斷語句
流程式控制制 "if" 表達式 如果條件為真則執行then後面的部分: if ....; then
....
elif ....; then
....
else
....
fi
大多數情況下,可以使用測試命令來對條件進行測試。比如可以比較字元串、判斷文件是否存在及是否可讀等等… 通常用" [ ] "來表示條件測試。注意這里的空格很重要。要確保方括弧的空格。
[ -f "somefile" ] :判斷是否是一個文件
[ -x "/bin/ls" ] :判斷/bin/ls是否存在並有可執行許可權
[ -n "$var" ] :判斷$var變數是否有值
[ "$a" = "$b" ] :判斷$a和$b是否相等 -r file用戶可讀為真
-w file用戶可寫為真
-x file用戶可執行為真
-f file文件為正規文件為真
-d file文件為目錄為真
-c file文件為字元特殊文件為真
-b file文件為塊特殊文件為真
-s file文件大小非0時為真
-t file當文件描述符(默認為1)指定的設備為終端時為真
######################################################### 含條件選擇的shell腳本
對於不含變數的任務簡單shell腳本一般能勝任。但在執行一些決策任務時,就需要包含if/then的條件判斷了。shell腳本編程支持此類運算,包 括比較運算、判斷文件是否存在等。基本的if條件命令選項有: -eq —比較兩個參數是否相等(例如,if [ 2 –eq 5 ])
-ne —比較兩個參數是否不相等
-lt —參數1是否小於參數2
-le —參數1是否小於等於參數2
-gt —參數1是否大於參數2
-ge —參數1是否大於等於參數2
-f — 檢查某文件是否存在(例如,if [ -f "filename" ])
-d — 檢查目錄是否存在
幾 乎所有的判斷都可以用這些比較運算符實現。腳本中常用-f命令選項在執行某一文件之前檢查它是否存在。 ################################################################## 判斷文件是否存在 #!/bin/sh
today=`date -d yesterday +%y%m%d`
file="apache_$today.tar.gz"
cd /home/chenshuo/shell
if [ -f "$file" ];then
echo "OK"
else
echo "error $file" >error.log
mail -s "fail backup from test" [email protected] <error.log
fi

❺ Shell編程中 if語句判斷時怎樣寫判斷條件判斷變數a若為整型變數則執行後面的語句

把if [ "$tt" ~ '/^[1-9][0-9]*$/' ] 改成
if [ "$tt" -le 0 -o "$tt" -ge 0 ] 2>/dev/null

這邊是只會做整數的比較,如果$tt不是整數就會產生錯誤信息,並不比較。然後執行else後面的動作。產生的錯誤信息可以用2>/dev/null丟掉。

如果是整數則進行[]內的比較,中間的-o表示或者,意思是整數$tt小於等於0或者大於等於0則為真,執行then後面的動作

❻ 編寫一個簡單的shell程序,判斷系統中是否存在,如果存在將其刪除

編寫一個簡單的shell程序,要求如下:
一:這個shell必須支持以下內部命令:
1.cd<directory>--把當前目錄改變為<directory>,如果沒有<directory>參數,則顯示當前目錄。如果該目錄不存在,則給出錯誤提示。這個命令可以用來改變PWD環境變數。
2.clr--清屏。
3.dir<directory>--列出目錄<directory>的內容。
4.environ--列出所有的環境變數。
5.echo<comment>--在屏幕上顯示<comment>並換行。
6.help--顯示用戶手冊,並且使用more命令過濾。
7.pause--停止shell直到按下回車。
8.quit--退出shell。
9.shell的環境變數應該包含shell=<pathname>/myshell,其中<pathname>/myshell是可執行程序shell的完整路徑。
二:其他的命令行被解釋為程序調用,,shell創建並執行這個程序,並作為自己的子進程,程序的環境變數必需包含以下條目:
parent=<pathname>/myshell,
三:shell必須能夠從文件中提取命令行輸入,例如shell使用以下命令行被調用:
programname arg1 arg2 <inputfile> outputfile
四:shell必須支持i/o重定向,stdin和stdout或其中之一。例如命令行為
programname arg1 arg2 <inputfile> outputfile
使用arg1和arg2執行程序programname,輸入文件流被替換為inputfile,輸出文件流被替換為outputfile。
stdout重定向應該支持以下內部命令:dir,environ,echo和help。
使用輸出重定向是,如果重定向字元是>,則創建輸出文件,如果存在則覆蓋之;如果重定向字元為 >>則也會創建輸出文件,如果存在則添加到文件 尾。
五:shell必需支持後台程序執行。如果在命令行後面添加字元&,在載入完程序後需要立刻返回命令行提示符。
六:命令行提示符必需包含當前路徑。

❼ 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");
……
謝謝

linux shell編程中怎麼判斷時間相等

#!/bin/bash#格式化過期日期,格式化過期日期完整時間以當前時間作為參考!expday="2018-04-11 `date +%T`"echo "Expire day is $expday"#當前日期時間格式為stamp時間戳todays=`date +%s`echo "Today is $(date +"%F %T")"#以下2種方式做時間的四則運算,分別使用 let 或者 $(( ))#過期日期已格式化,規避整數運算的誤差(去余數)#let dayDiff=($(date -d "$expday" +%s)-$todays)/86400dayDiff=$(( ($(date -d "$expday" +%s)-$todays)/86400 ))echo "Diff day is $dayDiff days!"

其餘說明:
bash 不支持浮點運算,如果需要進行浮點運算,需要藉助bc,awk 處理。Linux命令需求的話可如下圖進行查詢

❾ 如何編寫shell 判斷字元串為空

主要有以下幾種方法:
echo 「$str」|awk '{print length($0)}'
expr length 「$str」
echo 「$str」|wc -c
但是第三種得出的值會多1,可能是把結束符也計算在內了

判斷字元串為空的方法有三種:
if [ "$str" = "" ]
if [ x"$str" = x ]
if [ -z "$str" ] (-n 為非空)
注意:都要代雙引號,否則有些命令會報錯,養成好習慣吧!

❿ shell編程中有關時間的判斷

先用date +%p 看返回結果,根據結果去改變下面的條件語句,也許你不是返回「下午」而是返回「PM」,因為這個和你機器的環境變數有關(如英文中文等)根據結果去判斷:
/////看date +%p返回結果:
[root@ftptest2 ~]# date +%p
下午
////程序如下:
[root@ftptest2 ~]# cat test.sh
#!/bin/sh
what=`date +%p`
if [ "$what" == "上午" ]
then
echo "good moring"
else
echo "good afternoon"
fi

////程序運行如下:
[root@ftptest2 ~]# ./test.sh
good afternoon

閱讀全文

與shell編程中的判斷相關的資料

熱點內容
網盤忘記解壓碼怎麼辦 瀏覽:852
文件加密看不到裡面的內容 瀏覽:651
程序員腦子里都想什麼 瀏覽:430
oppp手機信任app在哪裡設置 瀏覽:185
java地址重定向 瀏覽:268
一年級下冊摘蘋果的演算法是怎樣的 瀏覽:448
程序員出軌電視劇 瀏覽:88
伺服器系統地址怎麼查 瀏覽:54
解壓游戲發行官 瀏覽:601
國外小伙解壓實驗 瀏覽:336
頂級大學開設加密貨幣 瀏覽:437
java重載與多態 瀏覽:528
騰訊應屆程序員 瀏覽:942
一鍵編譯程序 瀏覽:129
語音加密包哪個好 瀏覽:339
有什麼學習高中語文的app 瀏覽:282
安卓手機的表格里怎麼打勾 瀏覽:410
阿里雲伺服器有網路安全服務嗎 瀏覽:969
超解壓兔子視頻 瀏覽:24
單片機怎麼測負脈沖 瀏覽:174