最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Shell[[]]檢測某個條件是否成立

 更新時間:2023年01月12日 10:10:05   作者:富士康質(zhì)檢員張全蛋  
本文主要介紹了Shell[[]]檢測某個條件是否成立,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

[[ ]]是 Shell 內(nèi)置關(guān)鍵字,它和 test 命令類似,也用來檢測某個條件是否成立。

test 能做到的,[[ ]] 也能做到,而且 [[ ]] 做的更好;test 做不到的,[[ ]] 還能做到。可以認為 [[ ]] 是 test 的升級版,對細節(jié)進行了優(yōu)化,并且擴展了一些功能。

[[ ]] 的用法為:

[[ expression ]]

當 [[ ]] 判斷 expression 成立時,退出狀態(tài)為 0,否則為非 0 值。注意[[ ]]和expression之間的空格,這兩個空格是必須的,否則會導(dǎo)致語法錯誤。

[[ ]] 不需要注意某些細枝末節(jié)

[[ ]] 是 Shell 內(nèi)置關(guān)鍵字,不是命令,在使用時沒有給函數(shù)傳遞參數(shù)的過程,所以 test 命令的某些注意事項在 [[ ]] 中就不存在了,具體包括:

不需要把變量名用雙引號""包圍起來,即使變量是空值,也不會出錯。
不需要、也不能對 >、< 進行轉(zhuǎn)義,轉(zhuǎn)義后會出錯。
請看下面的演示代碼:

#!/bin/bash
?
read str1
read str2
?
if [[ -z $str1 ]] || [[ -z $str2 ]] ?#不需要對變量名加雙引號
then
? ? echo "字符串不能為空"
elif [[ $str1 < $str2 ]] ?#不需要也不能對 < 進行轉(zhuǎn)義
then
? ? echo "str1 < str2"
else
? ? echo "str1 >= str2"
fi

運行結(jié)果:
http://c.biancheng.net/shell/
http://data.biancheng.net/
str1 < str2

[[ ]] 支持邏輯運算符

對多個表達式進行邏輯運算時,可以使用邏輯運算符將多個 test 命令連接起來,例如:

[ -z "$str1" ] || [ -z "$str2" ]

你也可以借助選項把多個表達式寫在一個 test 命令中,例如:

[ -z "$str1" -o -z "$str2" ]

但是,這兩種寫法都有點“別扭”,完美的寫法是在一個命令中使用邏輯運算符將多個表達式連接起來。我們的這個愿望在 [[ ]] 中實現(xiàn)了,[[ ]]  支持 &&、|| 和 ! 三種邏輯運算符。

使用 [[ ]] 對上面的語句進行改進:

[[ -z $str1 || -z $str2 ]]

這種寫法就比較簡潔漂亮了。

注意,[[ ]] 剔除了 test 命令的-o和-a選項,你只能使用 || 和 &&。這意味著,你不能寫成下面的形式:

[[ -z $str1 -o -z $str2 ]]

當然,使用邏輯運算符將多個 [[ ]] 連接起來依然是可以的,因為這是 Shell 本身提供的功能,跟 [[ ]] 或者 test 沒有關(guān)系,如下所示:

[[ -z $str1 ]] || [[ -z $str2 ]]

該表總結(jié)了各種寫法的對錯

test 或 [][[ ]]
[ -z "$str1" ] || [ -z "$str2" ][[ -z $str1 ]] || [[ -z $str2 ]]
[ -z "$str1" -o -z "$str2" ][[ -z $str1 -o -z $str2 ]]×
[ -z $str1 || -z $str2 ]×[[ -z $str1 || -z $str2 ]]

[[ ]] 支持正則表達式

在 Shell [[ ]] 中,可以使用=~來檢測字符串是否符合某個正則表達式,它的用法為:

[[ str =~ regex ]]  str 表示字符串,regex 表示正則表達式。

下面的代碼檢測一個字符串是否是手機號:

#!/bin/bash
?
read tel
?
if [[ $tel =~ ^1[0-9]{10}$ ]]
then
? ? echo "你輸入的是手機號碼"
else
? ? echo "你輸入的不是手機號碼"
fi

運行結(jié)果1:
13203451100
你輸入的是手機號碼

運行結(jié)果2:
132034511009
你輸入的不是手機號碼

對^1[0-9]{10}$的說明:

  • ^匹配字符串的開頭(一個位置)
  • [0-9]{10}匹配連續(xù)的十個數(shù)字
  • $匹配字符串的末尾(一個位置)

本文并不打算講解正則表達式的語法,不了解的讀者請猛擊《正則表達式30分鐘入門教程》。

總結(jié)

有了 [[ ]],你還有什么理由使用 test 或者 [ ],[[ ]] 完全可以替代之,而且更加方便,更加強大。

但是 [[ ]] 對數(shù)字的比較仍然不友好,所以我建議,以后大家使用 if 判斷條件時,用 (()) 來處理整型數(shù)字,用 [[ ]] 來處理字符串或者文件。

到此這篇關(guān)于Shell[[]]檢測某個條件是否成立的文章就介紹到這了,更多相關(guān)Shell[[]]檢測條件成立內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Shell實現(xiàn)判斷進程是否存在并重新啟動腳本分享

    Shell實現(xiàn)判斷進程是否存在并重新啟動腳本分享

    這篇文章主要介紹了Shell實現(xiàn)判斷進程是否存在并重新啟動腳本分享,本文給出了兩個實現(xiàn)腳本,分簡潔版和詳細版,需要的朋友可以參考下
    2014-09-09
  • 詳解Linux中atime,mtime,ctime的使用場景

    詳解Linux中atime,mtime,ctime的使用場景

    這篇文章主要介紹了Linux的三個時間atime,mtime,ctime詳細說明與使用場景,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-10-10
  • 利用kernel提供的接口打印進程號(pid)

    利用kernel提供的接口打印進程號(pid)

    我們知道linux是模塊化的內(nèi)核。實現(xiàn)模塊、利用kernel提供的接口,首先了解寫模塊的基本框架。下面的c文件就是最基本的框架,當然還有怎樣添加一些符號變量,利用的module_param,沒用上
    2013-11-11
  • Shell實現(xiàn)系統(tǒng)時間和BIOS時間同步校準腳本分享

    Shell實現(xiàn)系統(tǒng)時間和BIOS時間同步校準腳本分享

    這篇文章主要介紹了Shell實現(xiàn)系統(tǒng)時間和BIOS時間同步校準腳本分享,本文給出了多個時間同步服務(wù)器,然后用ntpdate輪詢同步,需要的朋友可以參考下
    2014-10-10
  • Linux實現(xiàn)文件定期本地備份/異地備份/刪除備份的腳本

    Linux實現(xiàn)文件定期本地備份/異地備份/刪除備份的腳本

    數(shù)據(jù)備份的意義就在于,當受到網(wǎng)絡(luò)攻擊、入侵、電源故障或者操作失誤等事故的發(fā)生后,可以完整、快速、簡捷、可靠地恢復(fù)原有系統(tǒng)。本文為大家準備了文件定期本地備份/異地備份/刪除備份的腳本,希望對你們有所幫助
    2022-10-10
  • Linux查看系統(tǒng)時間的詳細方法總結(jié)

    Linux查看系統(tǒng)時間的詳細方法總結(jié)

    系統(tǒng)時間是計算機硬件和軟件運行的基礎(chǔ),在Linux系統(tǒng)中,查看系統(tǒng)時間是一項基本任務(wù),本文將從多個方面介紹Linux查看系統(tǒng)時間的詳細方法,需要的朋友可以參考下
    2023-09-09
  • Linux下的fdisk指令用法場景分析

    Linux下的fdisk指令用法場景分析

    在Linux系統(tǒng)中,對磁盤進行分區(qū)是管理和利用磁盤空間的重要任務(wù)之一,本篇將以通俗易懂的方式,詳細介紹fdisk指令的前世今生、功能、用法和應(yīng)用場景,幫助讀者全面了解fdisk指令,并掌握其在磁盤管理和問題排查方面的應(yīng)用,需要的朋友可以參考下
    2024-01-01
  • Linux禁止普通用戶su至root的解決方法

    Linux禁止普通用戶su至root的解決方法

    很多朋友不清楚linux如何禁止普通用戶su到root,這里需要修改兩個配置文件,具體詳細配置大家通過本文了解下吧
    2017-08-08
  • linux服務(wù)器安全加固shell腳本代碼

    linux服務(wù)器安全加固shell腳本代碼

    有時候安裝完服務(wù)器以后,需要一些安全設(shè)置,這段腳本就是為了安全加固所寫,需要的朋友可以參考下
    2013-06-06
  • 解決VirtualBox中Ubuntu 14.04屏幕分辨率不能設(shè)置的問題

    解決VirtualBox中Ubuntu 14.04屏幕分辨率不能設(shè)置的問題

    下面小編就為大家?guī)硪黄鉀QVirtualBox中Ubuntu 14.04屏幕分辨率不能設(shè)置的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05

最新評論

迁安市| 山阳县| 曲阳县| 射阳县| 宜章县| 应城市| 陆川县| 怀集县| 从化市| 永寿县| 廉江市| 桃源县| 开鲁县| 芒康县| 武功县| 青阳县| 台南县| 舟曲县| 乐昌市| 教育| 香港| 望奎县| 台中县| 富民县| 鹿邑县| 榆社县| 南华县| 辽阳县| 葫芦岛市| 泾川县| 邵阳市| 翁牛特旗| 喀什市| 百色市| 丹凤县| 文安县| 平塘县| 安龙县| 阿瓦提县| 原阳县| 秦皇岛市|