Shell編程基礎篇-下

来源:http://www.cnblogs.com/clsn/archive/2017/12/08/8006210.html
-Advertisement-
Play Games

shell 條件表達式 if case 大量企業實際應用 ...


1.1 條件表達式

1.1.1 文件判斷

常用文件測試操作符

常用文件測試操作符

說明

-d文件,d的全拼為directory

文件存在且為目錄則為真,即測試表達式成立

-f文件,f的全拼為file

文件存在且為普通文件則為真,即測試表達式成立

-e文件,e的全拼為exist

文件存在則為真,即測試表達式成立。註意區別於“-f”,-e不辨別是目錄還是文件

-r文件,r的全拼為read

文件存在且可讀則為真,即測試表達式成立

-s文件,s的全拼為size

文件存在且文件大小不為0則為真,即測試表達式成立

-w文件,w的全拼為write

文件存在且可寫則為真,即測試表達式成立

-x文件,x的全拼為executable   

文件存在且可執行則為真,即測試表達式成立

-L文件,L的全拼為link

文件存在且為鏈接文件則為真,即測試表達式成立

fl -nt f2nt 的全拼為 newer than

文件fl比文件f2新則為真,即測試表達式成立。根據文件的修改時間來計算

fl -ot f2ot 的全拼為 older than

文件fl比文件f2舊則為真,即測試表達式成立。根據文件的修改時間來計算

判斷文件是否存在

[root@clsn scripts]# [ -f /etc/hosts ]
[root@clsn scripts]# echo $?
0
[root@clsn scripts]# [ -f /etc/hosts1 ]
[root@clsn scripts]# echo $?
1

判斷文件是否存在,返回方式

[root@clsn scripts]# [ -f /etc/hosts ] && echo "文件存在" || echo "文件不存在" 
文件存在
[root@clsn scripts]# [ -f /etc/hosts1 ] && echo "文件存在" || echo "文件不存在" 
文件不存在

判斷目錄是否存在

[root@clsn scripts]# [ -d /tmp ] && echo "目錄存在" || echo "目錄不存在" 
目錄存在
[root@clsn scripts]# [ -d /tmp1 ] && echo "目錄存在" || echo "目錄不存在" 
目錄不存在

使用變數的方法進行判斷

dir=/etc1/;[ -d $dir ] && tar zcf etc.tar.gz $dir || echo "$dir目錄不存在"

1.1.2 字元串判斷

字元串測試操作符 

常用字元串測試操作符

說明

-n "字元串"

若字元串的長度不為0,則為真,即測試表達式成立,n可以理解為no zero

-Z "字元串"

若字元串的長度為0,則為真,即測試表達式成立,z可以理解為zero的縮寫

" 1"== " 2"

若字元串1等於字元串2,則為真,即測試表達式成立,可使用"=="代替"="

" 1" = " 2"        

若字元串1不等於字元串2,則為真,即測試表達式成立,但不能用"!=="代替"!="

1.對於字元串的測試,一定要將字元串加雙引號之後再進行比較。

2.空格非空

-z 判斷字元串長度

[root@clsn scripts]# x=  ; [ -z "$x" ] && echo "輸入為空" || echo '輸入有內容'
輸入為空
[root@clsn scripts]# x=12 ; [ -z "$x" ] && echo "輸入為空" || echo '輸入有內容'
輸入有內容

-n 判斷字元串長度

[root@clsn scripts]# x=12 ; [ -n "$x" ] && echo "輸入有內容" || echo '輸入為空'
輸入有內容
[root@clsn scripts]# x= ; [ -n "$x" ] && echo "輸入有內容" || echo '輸入為空'
輸入為空

"串 1" == " 串 2 "       使用定義變數的方式進行判斷

cmd=$1
[ "$cmd" == "start" ] && echo start
# 測試
[root@clsn scripts]# cmd=start;[ "$cmd" == "start" ] && echo start
start

1.1.3 整數判斷

整數二元比較操作符參考

[]以及test

使用的比較符號

(())[[]]

使用的比較符號

說明

-eq

===

相等,全拼為equal

-ne

=

不相等,全拼為not equal

-gt

大於,全拼為greater than

-ge

>=

大於等於,全拼為greater equal

-lt

小於,全拼為丨ess than

-le

<=

小於等於,全拼為less equal

判斷兩數是否相等

[root@clsn scripts]# [ 1 -eq 1 ]
[root@clsn scripts]# echo $?
0
[root@clsn scripts]# [ 1 -eq 2 ]
[root@clsn scripts]# echo $?
1

大於等於

[root@clsn ~]# [ 11 -ge 1 ] && echo "成立" || echo "不成立"
成立

小於

[root@clsn ~]# [ 11 -lt 1 ] && echo "成立" || echo "不成立"
不成立

大於

[root@clsn ~]# [ 11 -gt 1 ] && echo "成立" || echo "不成立"
成立

不等於

[root@clsn ~]# [ 11 -ne 1 ] && echo "成立" || echo "不成立"
成立

1.1.4 邏輯符號

常用邏輯操作符 

[]test中使用的操作符

說明

[[]]和中使用的操作符

說明

-a

[ 條件A -a  條件B ]

AB都要成立,整個表達式才成立

&&

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Linux上的文件系統一般來說就是EXT2或EXT3,但這篇文章並不准備一上來就直接講它們,而希望結合Linux操作系統並從文件系統建立的基礎——硬碟開始,一步步認識Linux的文件系統。## 1.機械硬碟的物理存儲機制現代電腦大部分文件存儲功能都是由機械硬碟這種設備提供的。(現在的SSD和快閃記憶體從... ...
  • 上章鏈接入口: http://www.cnblogs.com/lifexy/p/8006748.html 在上章里,我們分析了oops的PC值在哪個函數出錯的 本章便通過棧信息來分析函數調用過程 1.上章的oops棧信息如下圖所示: 9fe0: 代表最初的棧頂SP寄存器位置 9e80:代表函數出錯的 ...
  • Mysql實現企業級資料庫主從複製架構實戰 環境背景:公司規模已經形成,用戶數據已成為公司的核心命脈,一次老王一不小心把資料庫文件刪除,通過mysqldump備份策略恢復用了兩個小時,在這兩小時中,公司業務中斷,損失100萬,老王做出深刻反省,公司也因此對於資料庫的性能和可靠性提出更高要求。 要求對 ...
  • 原地址:http://blog.sina.com.cn/s/blog_9ba89b9901019bn9.html 用好Vmware Workstation 的克隆來簡化虛擬機的安裝配置: 好像是從Vmware5開始,增加了克隆的功能。在5.5中,克隆功能進一步強大了不少。充分利用好Vmware的克隆 ...
  • 本節主要介紹Linux基本服務的部署步驟,並以httpd服務的部署進行了詳細說明。 ...
  • 本節主要介紹Linux的文件系統,包括文件存儲結構,硬碟的分區、格式化、掛載,文件和目錄的軟鏈接、硬鏈接。 ...
  • 1.當驅動有誤時,比如,訪問的記憶體地址是非法的,便會列印一大串的oops出來 1.1以LED驅動為例 將open()函數里的ioremap()屏蔽掉,直接使用物理地址的GPIOF,如下圖所示: 1.2然後編譯裝載26th_segmentfault並執行測試程式後,內核便列印了oops出來,如下圖所示 ...
  • 本節主要介紹Linux的記憶體和進程,用到的基本命令是top,free,ps,kill,pstree,psgrep;用思維導圖進行展示說明。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...