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

shell的條件測試,變量測試,表達(dá)式中的0和1,數(shù)值判斷,字符串判斷

 更新時間:2024年01月17日 15:37:52   作者:數(shù)哥  
本文主要介紹了shell的條件測試,變量測試,表達(dá)式中的0和1,數(shù)值判斷,字符串判斷,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

條件測試

條件測試:判斷某需求是否滿足。若真,則狀態(tài)碼變量0; 返回若假,則狀態(tài)碼變量,返回1

條件測試命令

test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]

注意:EXPRESSION前后必須有空白字符

變量測試

-v VAR 或者 [ -v VAR] 變量VAR是否設(shè)置
注: 變量的條件測試其實就是判斷變量是否定義

[root@zaishu ~]# unset a  //重置變量,表示變量沒有被定義
[root@zaishu ~]# test -v a
[root@zaishu ~]# echo $?
1
[root@zaishu ~]# a=1  //變量已定義
[root@zaishu ~]# test -v a
[root@zaishu ~]# echo $?  //所以判斷為真
0
[root@zaishu ~]# a=''
[root@zaishu ~]# test -v a
[root@zaishu ~]# echo $?
0
[root@zaishu ~]# a=""
[root@zaishu ~]# test -v a
[root@zaishu ~]# echo $?
0
[root@zaishu ~]# [ -v b ]
[root@zaishu ~]# echo $?
1
[root@zaishu ~]# [ -v a ]
[root@zaishu ~]# echo $?
0

表達(dá)式中的0或1

表達(dá)式中的數(shù)字0或1,并不代表真假,每個表達(dá)式執(zhí)行完,退出的時候,都會返回一個退出狀態(tài)碼。if語句根據(jù) [ ] 表達(dá)式執(zhí)行的退出狀態(tài)碼進(jìn)行判斷,在所有的退出狀態(tài)碼中,0表示執(zhí)行成功,其他退出狀態(tài)碼都為假。這是與C語言不同的。

[root@zaishu sh]# cat tru.sh 
#!/bin/bash
if [ 1 ];   //這其實返回值是為0,為真
then echo 'ok';
fi

[root@zaishu sh]# ./tru.sh
[root@zaishu sh]# ok
[root@zaishu sh]# cat tru.sh 
#!/bin/bash
if [ 0 ];  //這其實返回值是為0,為真
then echo 'ok';
fi

[root@zaishu sh]# ./tru.sh
[root@zaishu sh]# ok

數(shù)值測試

-gt 是否大于
-ge 是否大于等于
-eq 是否等于
-ne 是否不等于
-lt 是否小于
-le 是否小于等于
[root@zaishu sh]# a=1
[root@zaishu sh]# b=2
[root@zaishu sh]# [ $a -lt $b ]
[root@zaishu sh]# echo $?
0
[root@zaishu sh]# [ $a -gt $b ]
[root@zaishu sh]# echo $?
1
[root@zaishu sh]# cat num.sh 
#!/bin/bash
a=30
b=20
if [ $a != $b ]
then
 echo "$a !=$b:a != b"
else
 echo "$a !=$b:a = b"
fi

if [ $a -lt 100 -a $b -gt 15 ]
then
 echo "$a 小于 100 且 $b 大于 15 : 返回 true"
else
 echo "$a 小于 100 且 $b 大于 15 : 返回 false"
fi

if [ $a -lt 100 -o $b -gt 100 ]
then
 echo "$a 小于 100 或 $b 大于 100 : 返回 true"
else
 echo "$a 小于 100 或 $b 大于 100 : 返回 false"
fi

if [ $a -lt 5 -o $b -gt 100 ]
then
 echo "$a 小于 5 或 $b 大于 100 : 返回 true"
else
 echo "$a 小于 5 或 $b 大于 100 : 返回 false"
fi
[root@zaishu sh]# ./num.sh 
30 !=20:a != b
30 小于 100 且 20 大于 15 : 返回 true
30 小于 100 或 20 大于 100 : 返回 true
30 小于 5 或 20 大于 100 : 返回 false

字符串測試

  • 常見比較符
 -z "STRING" 字符串是否為空,空為真,不空為假
 -n "STRING" 字符串是否不空,不空為真,空為假
 = 是否等于
 != 是否不等于
> ascii碼是否大于ascii碼
< 是否小于
== 左側(cè)字符串是否和右側(cè)的PATTERN相同 
注意:此表達(dá)式用于[[ ]]中,PATTERN為通配符
 =~ 左側(cè)字符串是否能夠被右側(cè)的PATTERN所匹配
注意: 此表達(dá)式用于[[ ]]中;擴(kuò)展的正則表達(dá)式
  • 單引號和雙引號的區(qū)別
    對類型來說是無關(guān)的。
    單引號不對相關(guān)量進(jìn)行替換,如不對$符號解釋成變量引用,從而用對應(yīng)變量的值替代,雙引號則會進(jìn)行替代。

  • 字符匹配示例

[root@zaishu sh]# unset str
[root@zaishu sh]# [ -z "str" ]  //為空,所以表達(dá)式返回值為真
[root@zaishu sh]# echo $?
0
[root@zaishu sh]# unset str
[root@zaishu sh]# [ -z "str" ]
[root@zaishu sh]# echo $?
1
[root@zaishu sh]# [ -z "$str" ]
[root@zaishu sh]# echo $?
0
[root@zaishu sh]# str=""
[root@zaishu sh]# [ -z "$str" ]
[root@zaishu sh]# echo $?
0
[root@zaishu sh]# str=" "
[root@zaishu sh]# [ -z "$str" ]
[root@zaishu sh]# echo $?
1
[root@zaishu sh]# [ -n "$str" ]
[root@zaishu sh]# echo $?
0
[root@zaishu sh]# str=zaishu
[root@zaishu sh]# [ "$str" ]
[root@zaishu sh]# echo $?
0
[root@zaishu sh]# str1=zaishu
[root@zaishu sh]# str2=shuge
[root@zaishu sh]# [ "$str1" = "str2" ]
[root@zaishu sh]# echo $?
1
[root@zaishu sh]# str2=zaishu
[root@zaishu sh]# [ "$str1" = "$str2" ]
[root@zaishu sh]# echo $?
0
[root@zaishu sh]# cat str.sh 
#!/bin/sh

str1="abc"
str2="abc"
str3=""

echo "輸入的原始值:str1=$str1,str2=$str2"

#判斷字符串是否相等
if [ "$str1" = "$str2" ];then
echo "$str1 = $str2"
fi

echo "在[]中==與=等價"
if [ "$str1" == "$str2" ];then
echo "$str1 == $str2"
fi

#字符串不相等
if [ "$str1" != "$str2" ];then
echo "[ != ]"
fi
 
#字符串不相等
if [[ "$str1" != "$str2" ]];then
echo "[[ != ]]"
fi
 
#字符串不為空,長度不為0
if [ -n "$str1" ];then
echo "不為空"
fi
 
#字符串為空.就是長度為0.
if [ -z "$str3" ];then
echo "str3長度為0,為空"
fi
[root@zaishu sh]# ./str.sh 
輸入的原始值:str1=abc,str2=abc
abc = abc
在[]中==與=等價
abc == abc
不為空
str3長度為0,為空
  • 模式匹配
[root@zaishu sh]# file=shuge.log
[root@zaishu sh]# [[ "$file" == *.log ]]
[root@zaishu sh]# echo $?
0
[root@zaishu sh]# [[ "$file" == *.txt ]]
[root@zaishu sh]# echo $?
1

[root@zaishu sh]# [[ "$file" != *.txt ]]
[root@zaishu sh]# echo $?
0
[root@zaishu sh]# cat str.sh 
#!/bin/sh

str3="def"

echo "==的功能在[[]]和[]中的行為是不同的"

#如果$str3以”d”開頭(模式匹配)那么將為true 
if [[ "$str3" == d* ]];then
echo "str3是以d開頭的"
fi

#如果$str3在進(jìn)行字符匹配時候,結(jié)果為false
if [ "$str3" == d* ];then
echo "==/"d*/""
fi


if [[ "$str3" == "d*" ]];then
echo "==/"d*/""
fi

#結(jié)果為true
if [[ "$str3" = d* ]];then
echo "=/"d*/""
fi
[root@zaishu sh]# ./str.sh 
#==的功能在[[]]和[]中的行為是不同的
#str3是以d開頭的
#=/d*/
  • 正則表達(dá)式匹配
[root@zaishu sh]# [[ "$file" =~ \txt$ ]]
[root@zaishu sh]# echo $?
1
[root@zaishu sh]# [[ "$file" =~ \log$ ]]  //字符串是以log結(jié)尾
[root@zaishu sh]# echo $?
0
[root@zaishu sh]# num=10
[root@zaishu sh]# [[ "$num" =~ ^[0-9]+$ ]]
[root@zaishu sh]# echo $?
0
[root@zaishu sh]# str=a10
[root@zaishu sh]# [[ "$str" =~ ^[0-9]+$ ]]
[root@zaishu sh]# echo $?
1
[root@zaishu sh]# ip=10.11.12.13
[root@zaishu sh]# [[ "$ip" =~ ^([0-9]{1,3}.){3}[0-9]{1,3}$ ]]  //用于匹配IP
[root@zaishu sh]# echo $?
0

總結(jié)

到此這篇關(guān)于shell的條件測試,變量測試,表達(dá)式中的0和1,數(shù)值判斷,字符串判斷的文章就介紹到這了,更多相關(guān)shell 條件測試,變量測試內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • linux查看磁盤空間的命令詳解

    linux查看磁盤空間的命令詳解

    本篇文章主要給大家介紹了linux查看磁盤空間的兩個命令,文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定大幫助,需要的朋友可以參考下
    2023-12-12
  • 通過短信發(fā)送LOG歸類號碼發(fā)送情況的shell腳本

    通過短信發(fā)送LOG歸類號碼發(fā)送情況的shell腳本

    通過短信發(fā)送LOG歸類號碼發(fā)送情況的shell腳本,有需要的朋友可以參考下
    2013-02-02
  • Linux下NC反彈shell命令(推薦)

    Linux下NC反彈shell命令(推薦)

    這篇文章主要介紹了Linux下NC反彈shell命令,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧
    2017-07-07
  • Linux 中LVS NAT 配置步驟的詳解

    Linux 中LVS NAT 配置步驟的詳解

    這篇文章主要介紹了Linux 中LVS NAT 配置步驟的詳解的相關(guān)資料,這里列出詳細(xì)的實現(xiàn)步驟,需要的朋友可以參考下
    2017-08-08
  • Shell腳本數(shù)組用法小結(jié)

    Shell腳本數(shù)組用法小結(jié)

    這篇文章主要介紹了Shell腳本數(shù)組用法小結(jié),本文講解了數(shù)組聲明、數(shù)組遍歷、獲取數(shù)組長度、刪除數(shù)組元素、數(shù)組切片等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • linux下監(jiān)控網(wǎng)絡(luò)流量的腳本

    linux下監(jiān)控網(wǎng)絡(luò)流量的腳本

    在我們的日常工作當(dāng)中,監(jiān)控網(wǎng)絡(luò)要么使用iptarf,ifstat這些命令實現(xiàn)的,但是需要裝額外的RPM包。特別是iptarf裝起來麻煩
    2013-01-01
  • mac使用Shell(終端)SSH連接遠(yuǎn)程服務(wù)器的方法

    mac使用Shell(終端)SSH連接遠(yuǎn)程服務(wù)器的方法

    這篇文章主要介紹了mac使用Shell(終端)SSH連接遠(yuǎn)程服務(wù)器的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Window11?WSL2?添加靜態(tài)IP的腳本

    Window11?WSL2?添加靜態(tài)IP的腳本

    這篇文章主要介紹了Window11?WSL2?添加靜態(tài)IP的腳本方法,通過一段腳本給?Windows?端的"vEthernet?(WSL)"加了IPv4?172.18.16.1,給?Linux?端的?eth0?添加?IPv4?172.18.16.1,在使用前,請按需調(diào)整網(wǎng)絡(luò)接口的名稱和IP地址,需要的朋友可以參考下
    2023-01-01
  • Linux終端命令行的常用快捷鍵詳解

    Linux終端命令行的常用快捷鍵詳解

    下面小編就為大家?guī)硪黄狶inux終端命令行的常用快捷鍵詳解。小編覺的挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • Linux啟動過程詳細(xì)介紹

    Linux啟動過程詳細(xì)介紹

    這篇文章主要介紹了Linux啟動過程詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-06-06

最新評論

定州市| 临城县| 天柱县| 宁蒗| 铜陵市| 宿松县| 什邡市| 洛阳市| 玉门市| 逊克县| 邮箱| 崇义县| 富蕴县| 台北县| 汾西县| 万年县| 永善县| 门头沟区| 吴江市| 邵阳县| 中宁县| 玉溪市| 库车县| 牟定县| 广宁县| 汶上县| 沁源县| 繁峙县| 吉隆县| 巫山县| 东宁县| 襄垣县| 云霄县| 浙江省| 吴忠市| 崇义县| 兴文县| 特克斯县| 九龙城区| 陇川县| 黎城县|