linux 下shell中if的“-e,-d,-f”


shell教程參考:

http://www.beylze.cn/shell/

http://www.beylze.com/shell/

http://manual.51yip.com/

http://www.beylze.cn/

1、文件表達式

-e filename 如果 filename存在,則為真
-d filename 如果 filename為目錄,則為真 
-f filename 如果 filename為常規文件,則為真
-L filename 如果 filename為符號鏈接,則為真
-r filename 如果 filename可讀,則為真 
-w filename 如果 filename可寫,則為真 
-x filename 如果 filename可執行,則為真
-s filename 如果文件長度不為0,則為真
-h filename 如果文件是軟鏈接,則為真
filename1 -nt filename2 如果 filename1比 filename2新,則為真。
filename1 -ot filename2 如果 filename1比 filename2舊,則為真。

2、整數變量表達式

-eq 等於
-ne 不等於
-gt 大於
-ge 大於等於
-lt 小於
-le 小於等於

3、字符串變量表達式

If  [ $a = $b ]                 如果string1等於string2,則為真
                                字符串允許使用賦值號做等號
if  [ $string1 !=  $string2 ]   如果string1不等於string2,則為真       
if  [ -n $string  ]             如果string 非空(非0),返回0(true)  
if  [ -z $string  ]             如果string 為空,則為真
if  [ $sting ]                  如果string 非空,返回0 (和-n類似) 

4、邏輯表達式

邏輯非 !   (條件表達式的相反)
    if [ ! 表達式 ]
    if [ ! -d $num ]    如果不存在目錄$num

邏輯與 –a  (條件表達式的並列)
    if [ 表達式1  –a  表達式2 ]

邏輯或 -o   (條件表達式的或)
    if [ 表達式1  –o 表達式2 ]

5、Ctrl+c、Ctrl+z、Ctrl+d

在Linux系統中,Ctrl+c和ctrl+z都是bai中斷命令,但是他們的作用卻不du一樣zhi.
Ctrl+c是強制中斷程序的執行,,進程已經終止

Ctrl+z是將dao任務中止(暫停的意思)。

此時此任務並沒有結束,仍然在進程中他只是維持掛起的狀態。用戶可以使用fg/bg操作繼續前台或后台的任務,fg命令重新啟動前台被中斷的任務,bg命令把被中斷的任務放在后台執行.

Ctrl+d 不是發送信號,而是表示一個特殊的二進制值,表示 EOF。

6、什么時候不適合使用Shell編程

  • 資源緊張的項目,特別是那些速度是重要因素的地方(排序,散序,等等)

  • 程序要進行很復雜的數學計算,特別是浮點計算,任意精度的計算,或者是復數計算(應該用C++或是FORTRAN代替)

  • 要求交叉編譯平台的可移植性(使用C或者是Java代替)

  • 需要結構化編程的復雜應用(需要變量類型檢查和函數原型等等)

  • 對於影響系統全局性的關鍵任務應用。

  • 安全非常重要。你必須保證系統完整性和抵抗入侵,攻擊和惡意破壞。

  • 項目由連串的依賴的各個部分組成。

  • 多種文件操作要求(Bash被限制成文件順序存取,並且是以相當笨拙,效率低下的逐行的存取方式)

  • 需要良好的多維數組支持。

  • 需要類似鏈表或樹這樣的數據結構。

  • 需要產生或操作圖象或圖形用戶界面。

  • 需要直接存取系統硬件。

  • 需要端口號或是socket I/O。

  • 需要使用可重用的函數庫或接口。

  • 所有的私有的不開源的應用程序(Shell腳本的源代碼是直接可讀,能被所有人看到的)


原文鏈接:https://blog.csdn.net/superbfly/article/details/49274889


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM