欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Shell編程條件測(cè)試的實(shí)現(xiàn)

 更新時(shí)間:2021年11月24日 10:20:20   作者:Jake Tian  
Shell腳本的條件測(cè)試可以用于測(cè)試字符串、文件狀態(tài)和數(shù)字。本文就詳細(xì)的介紹一下Shell編程條件測(cè)試,具有一定的參考價(jià)值,感興趣的可以了解一下

什么是Shell

Shell是一個(gè)命令解釋器,它會(huì)解釋并執(zhí)行命令行提示符下輸入的命令。除此之外,Shell還有另一個(gè)功能,如果要執(zhí)行多條命令,它可以將這組命令存放在一個(gè)文件中,然后可以像執(zhí)行Linux系統(tǒng)提供的其他程序一樣執(zhí)行這個(gè)文件,這個(gè)命令文件就叫做Shell程序或者Shell腳本。當(dāng)運(yùn)行這個(gè)文件時(shí),它會(huì)像在命令行輸入這些命令一樣順序地執(zhí)行它們。

Shell腳本支持變量、命令行參數(shù)、交互式輸入、函數(shù)模塊、各種控制語句等高級(jí)編程語言的特性,如if、case、while和for等。利用Shell程序設(shè)計(jì)語言可以編寫出功能非常復(fù)雜的腳本程序,把大量的任務(wù)自動(dòng)化,尤其是那些需要輸入大量命令而在執(zhí)行過程中不太需要與用戶進(jìn)行干預(yù)的系統(tǒng)管理任務(wù)。

為了讓Shell能讀取并且執(zhí)行Shell程序,Shell腳本的文件權(quán)限必須被設(shè)置為可讀和可執(zhí)行。為了讓Shell可以找到程序,可以選擇輸入完全路徑名,或者將這個(gè)腳本的路徑放在PATH環(huán)境變量指定的路徑列表中。Shell腳本不是復(fù)雜的程序,它是由上往下逐行解釋執(zhí)行的。腳本的第一行總是以“#!<Shell解釋器文件路徑>”開始,用來指定該腳本是使用那種Shell進(jìn)行解釋執(zhí)行。

編寫Shell腳本

1)使用VI或者其他任意的文本編輯工具創(chuàng)建一個(gè)名為HelloWorld.sh的文件,并在其中加入以下內(nèi)容:

[root@localhost ~]# vi HelloWorld.sh
#!/bin/bash
#The first Shell script
echo "Hello World!"

2)為HelloWorld.sh文件添加執(zhí)行權(quán)限;

[root@localhost ~]# chmod +x HelloWorld.sh

3)運(yùn)行HelloWorld.sh腳本,查看運(yùn)行結(jié)果;

[root@localhost ~]# ./HelloWorld.sh

Hello World!

條件測(cè)試 | 數(shù)值測(cè)試

編寫Shell腳本時(shí),有時(shí)要先測(cè)試字符串是否一致、數(shù)字是否相等或者檢查文件狀態(tài),基于這些測(cè)試的結(jié)果再做下一步的操作。Shell腳本的條件測(cè)試可以用于測(cè)試字符串、文件狀態(tài)和數(shù)字。

測(cè)試完成后可以通過“$?”獲取測(cè)試的結(jié)果,其中0為正確,1為錯(cuò)誤。

數(shù)值測(cè)試用于對(duì)兩個(gè)數(shù)值進(jìn)行比較并得出判斷結(jié)果,包括:等于、不等于、大于、大于等于、小于、小于等于。

數(shù)值判斷的格式:[ 數(shù)值1 關(guān)系運(yùn)算符 數(shù)值2 ]

方括號(hào)與條件之間必須要有空格。

數(shù)值測(cè)試的關(guān)系運(yùn)算符
關(guān)系運(yùn)算符 說明
-eq? 兩個(gè)數(shù)值相等
-ne 兩個(gè)數(shù)值不相等
-gt 第一個(gè)數(shù)大于第二個(gè)數(shù)
-lt 第一個(gè)數(shù)小于第二個(gè)數(shù)
-ge 第一個(gè)數(shù)大于等于第二個(gè)數(shù)
-le 第一個(gè)數(shù)小于等于第二個(gè)數(shù)

測(cè)試兩個(gè)數(shù)值是否相等;

[root@localhost ~]# [ 1024 -eq 1024 ]           //測(cè)試1024是否等于1024
[root@localhost ~]# echo $?
0                                               //兩個(gè)數(shù)值相等
修改第一個(gè)數(shù)值為1124后再次進(jìn)行測(cè)試。
[root@localhost ~]# [ 1124 -eq 1024 ]
[root@localhost ~]# echo $?
1                                               //兩個(gè)數(shù)值不相等
[root@localhost ~]# number1=500                 //number1為500
[root@localhost ~]# number2=254                 //number2為254
[root@localhost ~]# [ $number1 -gt $number2 ]
[root@localhost ~]# echo $?
0                                               //number1大于number2
[root@localhost ~]#

條件測(cè)試 | 字符串測(cè)試

字符串測(cè)試可以對(duì)兩個(gè)字符串的值進(jìn)行比較,也可以測(cè)試單個(gè)字符串的值是否為空或者非空。

字符串測(cè)試的格式:[ 關(guān)系運(yùn)算符 字符串 ]或者[ 字符串1 關(guān)系運(yùn)算符 字符串2 ]

字符串測(cè)試的關(guān)系運(yùn)算符
關(guān)系運(yùn)算符 說明
= 兩個(gè)字符串相等
!= 兩個(gè)字符串不相等
-z 字符串為空
-n

字符串不為空

要測(cè)試兩個(gè)字符串是否相等
[root@localhost ~]# [ "abc" = "abc" ]
[root@localhost ~]# echo $?
0                                        //兩個(gè)字符串相等
把第一個(gè)字符串更改為bac后進(jìn)行測(cè)試
[root@localhost ~]# [ "bac" = "abc" ]
[root@localhost ~]# echo $?
1                                        //兩個(gè)字符串不相等
如果把運(yùn)算符改為“!=”
[root@localhost ~]# [ "bac" != "abc" ]
[root@localhost ~]# echo $?
0
判斷環(huán)境變量是否為空或者非空
[root@localhost ~]# [ -z $python1 ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ -n $python1 ]
[root@localhost ~]# echo $?
0                                        //python1變量為空
[root@localhost ~]# python1="test"       //對(duì)python1變量進(jìn)行賦值
[root@localhost ~]# [ -z $python1 ]
[root@localhost ~]# echo $?
1                                        //python1變量不為空
[root@localhost ~]#

條件測(cè)試 | 文件狀態(tài)測(cè)試

Linux的Shell腳本支持對(duì)文件狀態(tài)的檢測(cè),包括檢測(cè)文件的類型、文件的權(quán)限和文件的長度等;

文件狀態(tài)測(cè)試的格式:[ 關(guān)系運(yùn)算符 字符串 ]

文件狀態(tài)測(cè)試的關(guān)系運(yùn)算符
關(guān)系運(yùn)算符 說明
-d 目錄
-f 一般文件
-L 鏈接文件
-r

可讀

-w 可寫
-x 可執(zhí)行
-u 設(shè)置了suid
-s 文件長度大于0、非空

[root@localhost 20190105]# ll
總用量 4
-rwxr-xr-x. 1 root root 56 6月   4 07:55 HelloWorld.sh
[root@localhost 20190105]# [ -r HelloWorld.sh ]
[root@localhost 20190105]# echo $?
0                                                         //HelloWorld.sh 文件可讀
[root@localhost 20190105]# [ -w HelloWorld.sh ]
[root@localhost 20190105]# echo $?
0                                                         //HelloWorld.sh 文件可寫
[root@localhost 20190105]# [ -x HelloWorld.sh ]
[root@localhost 20190105]# echo $?
0                                                         //HelloWorld.sh 文件可執(zhí)行
[root@localhost 20190105]#

條件測(cè)試的邏輯操作符

邏輯操作符分以下3種:

  • -a:邏輯與,只有當(dāng)操作符兩邊的條件均為真時(shí),結(jié)果為真,否則為假。
  • -o:邏輯或,操作符兩邊的條件只要有一個(gè)為真,結(jié)果為真,只有當(dāng)兩邊所有條件為假時(shí),結(jié)果為假。
  • !:邏輯否,條件為假,結(jié)果為真。
如果要測(cè)試兩個(gè)文件的狀態(tài)
[root@localhost 20190105]# ll test1 test2
-rw-rw-r--. 1 root root 0 6月   4 09:25 test1
-rw-rw-r--. 1 root root 0 6月   4 09:25 test2
[root@localhost 20190105]# [ -r test1 -a -r test2 ] //測(cè)試文件 test1 和 test2 是否都可讀
[root@localhost 20190105]# echo $?
0
[root@localhost 20190105]# [ -x test1 -o -x test2 ] //測(cè)試文件 test1 和 test2 是否至少有一個(gè)可執(zhí)行
[root@localhost 20190105]# echo $?
1
如果要測(cè)試兩個(gè)數(shù)值變量
[root@localhost 20190105]# number1=10
[root@localhost 20190105]# number2=20
[root@localhost 20190105]# [ $number1 -eq 10 -a $number2 -gt 20 ] //測(cè)試是否number1 大于10 且 number2 大于20
[root@localhost 20190105]# echo $?
1
如果要測(cè)試文件test1 是否為不可讀
[root@localhost 20190105]# ls -l test1
-rw-rw-r--. 1 root root 0 6月   4 09:25 test1
[root@localhost 20190105]# [ ! -r test1 ] //測(cè)試文件test1 是否為不可讀
[root@localhost 20190105]# echo $?
1
[root@localhost 20190105]#

到此這篇關(guān)于Shell編程條件測(cè)試的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Shell 條件測(cè)試 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • linux shell實(shí)現(xiàn)求一個(gè)多維數(shù)組中的最大和最小值

    linux shell實(shí)現(xiàn)求一個(gè)多維數(shù)組中的最大和最小值

    這篇文章主要介紹了linux shell實(shí)現(xiàn)求一個(gè)多維數(shù)組中的最大和最小值,需要的朋友可以參考下
    2016-08-08
  • 分享一個(gè)入門級(jí)可控多線程shell腳本代碼

    分享一個(gè)入門級(jí)可控多線程shell腳本代碼

    這篇文章主要介紹了分享一個(gè)入門級(jí)可控多線程shell腳本代碼,需要的朋友可以參考下
    2016-02-02
  • shell命令之mv的具體使用

    shell命令之mv的具體使用

    本文主要介紹了shell命令之mv的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 提高你工作效率的shell命令總結(jié)大全

    提高你工作效率的shell命令總結(jié)大全

    腳本語言可以減少很多手動(dòng)的操作,作為一個(gè)Linux程序員都應(yīng)該了解簡單的腳本編寫來代替手動(dòng)的操作,下面這篇文章主要給大家總結(jié)分享了一些提高你工作效率的shell命令,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面來一起看看吧。
    2017-07-07
  • 詳解Linux下的文件標(biāo)述符和文件指針

    詳解Linux下的文件標(biāo)述符和文件指針

    這篇文章主要介紹了詳解Linux下的文件標(biāo)述符和文件指針的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • shell腳本--sed的用法詳解

    shell腳本--sed的用法詳解

    這篇文章主要介紹了shell腳本--sed的用法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • linux命令scp和sftp詳細(xì)介紹

    linux命令scp和sftp詳細(xì)介紹

    這篇文章主要介紹了linux命令scp和sftp詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Linux中Shell腳本判斷文件/文件夾是否存在方法

    Linux中Shell腳本判斷文件/文件夾是否存在方法

    很多時(shí)候我們?cè)谧鲞\(yùn)維的時(shí)候,我們需要做一些自動(dòng)化,這時(shí)我們就需要寫一些shell腳本,既然要用到shell腳本,就免不了文件操作,這篇文章主要給大家介紹了關(guān)于Linux中Shell腳本判斷文件/文件夾是否存在的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • shell 中數(shù)學(xué)計(jì)算總結(jié)

    shell 中數(shù)學(xué)計(jì)算總結(jié)

    shell中的賦值和操作默認(rèn)都是字符串處理,在此記下shell中進(jìn)行數(shù)學(xué)運(yùn)算的幾個(gè)特殊方法,以后用到的時(shí)候可以來看,呵呵
    2012-09-09
  • Shell如何遍歷包含空格的文本詳解

    Shell如何遍歷包含空格的文本詳解

    這篇文章主要給大家介紹了關(guān)于Shell如何遍歷包含空格的文本的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評(píng)論