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

Shell基本運算符的實現(xiàn)

 更新時間:2023年05月09日 09:14:12   作者:向陽逐夢  
Shell支持多種運算符,主要包括算數(shù)運算符,關(guān)系運算符,布爾運算符,字符串運算符,文件測試運算符,下面我們就介紹一下這些運算符的用法

Shell 和其他編程語言一樣,支持多種運算符,包括:

  • 算數(shù)運算符
  • 關(guān)系運算符
  • 布爾運算符
  • 字符串運算符
  • 文件測試運算符

原生bash不支持簡單的數(shù)學(xué)運算,但是可以通過其他命令來實現(xiàn),例如 awk 和 expr,expr 最常用。

expr 是一款表達(dá)式計算工具,使用它能完成表達(dá)式的求值操作。

例如,兩個數(shù)相加(注意使用的是反引號 ` 而不是單引號 ' ):

#!/bin/bash
val=`expr 2 + 2`
echo "兩數(shù)之和為 : $val"

兩點注意:

表達(dá)式和運算符之間要有空格,例如 2+2 是不對的,必須寫成 2 + 2,這與我們熟悉的大多數(shù)編程語言不一樣。

完整的表達(dá)式要被包含,注意這個字符不是常用的單引號,在 Esc 鍵下邊。

一、算術(shù)運算符

下表列出了常用的算術(shù)運算符,假定變量 a 為 10,變量 b 為 20:

注意: 條件表達(dá)式要放在方括號之間,并且要有空格,例如: [a==a==a==b] 是錯誤的,必須寫成 [ a==a == a==b ] 。

實例

算術(shù)運算符實例如下:

a=10
b=20
val=`expr $a + $b`
echo "a + b : $val"
val=`expr $a - $b`
echo "a - b : $val"
val=`expr $a * $b`
echo "a * b : $val"
val=`expr $b / $a`
echo "b / a : $val"
val=`expr $b % $a`
echo "b % a : $val"
if [ $a == $b ]
then
   echo "a 等于 b"
fi
if [ $a != $b ]
then
   echo "a 不等于 b"
fi

執(zhí)行腳本,輸出結(jié)果如下所示:

a + b : 30
a - b : -10
a * b : 200
b / a : 2
b % a : 0
a 不等于 b

注意:

乘號(*)前邊必須加反斜杠()才能實現(xiàn)乘法運算;if...then...fi 是條件語句,后續(xù)將會講解。在 MAC 中 shell 的 expr 語法是: $((表達(dá)式)) ,此處表達(dá)式中的 "*" 不需要轉(zhuǎn)義符號 "" 。

二、關(guān)系運算符

關(guān)系運算符只支持?jǐn)?shù)字,不支持字符串,除非字符串的值是數(shù)字。

下表列出了常用的關(guān)系運算符,假定變量 a 為 10,變量 b 為 20:

實例

關(guān)系運算符實例如下:

a=10
b=20
if [ $a -eq $b ]
then
   echo "$a -eq $b : a 等于 b"
else
   echo "$a -eq $b: a 不等于 b"
fi
if [ $a -ne $b ]
then
   echo "$a -ne $b: a 不等于 b"
else
   echo "$a -ne $b : a 等于 b"
fi
if [ $a -gt $b ]
then
   echo "$a -gt $b: a 大于 b"
else
   echo "$a -gt $b: a 不大于 b"
fi
if [ $a -lt $b ]
then
   echo "$a -lt $b: a 小于 b"
else
   echo "$a -lt $b: a 不小于 b"
fi
if [ $a -ge $b ]
then
   echo "$a -ge $b: a 大于或等于 b"
else
   echo "$a -ge $b: a 小于 b"
fi
if [ $a -le $b ]
then
   echo "$a -le $b: a 小于或等于 b"
else
   echo "$a -le $b: a 大于 b"
fi

執(zhí)行腳本,輸出結(jié)果如下所示:

10 -eq 20: a 不等于 b
10 -ne 20: a 不等于 b
10 -gt 20: a 不大于 b
10 -lt 20: a 小于 b
10 -ge 20: a 小于 b
10 -le 20: a 小于或等于 b

三、布爾運算符

下表列出了常用的布爾運算符,假定變量 a 為 10,變量 b 為 20:

實例

布爾運算符實例如下:

a=10
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

執(zhí)行腳本,輸出結(jié)果如下所示:

10 != 20 : a 不等于 b
10 小于 100 且 20 大于 15 : 返回 true
10 小于 100 或 20 大于 100 : 返回 true
10 小于 5 或 20 大于 100 : 返回 false

四、邏輯運算符

以下介紹 Shell 的邏輯運算符,假定變量 a 為 10,變量 b 為 20:

實例

邏輯運算符實例如下:

a=10
b=20
if [[ $a -lt 100 && $b -gt 100 ]]
then
   echo "返回 true"
else
   echo "返回 false"
fi
if [[ $a -lt 100 || $b -gt 100 ]]
then
   echo "返回 true"
else
   echo "返回 false"
fi

執(zhí)行腳本,輸出結(jié)果如下所示:

返回 false
返回 true

五、字符串運算符

下表列出了常用的字符串運算符,假定變量 a 為 "abc",變量 b 為 "efg":

實例

字符串運算符實例如下:

a="abc"
b="efg"
if [ $a = $b ]
then
   echo "$a = $b : a 等于 b"
else
   echo "$a = $b: a 不等于 b"
fi
if [ $a != $b ]
then
   echo "$a != $b : a 不等于 b"
else
   echo "$a != $b: a 等于 b"
fi
if [ -z $a ]
then
   echo "-z $a : 字符串長度為 0"
else
   echo "-z $a : 字符串長度不為 0"
fi
if [ -n "$a" ]
then
   echo "-n $a : 字符串長度不為 0"
else
   echo "-n $a : 字符串長度為 0"
fi
if [ $a ]
then
   echo "$a : 字符串不為空"
else
   echo "$

執(zhí)行腳本,輸出結(jié)果如下所示:

abc = efg: a 不等于 b
abc != efg : a 不等于 b
-z abc : 字符串長度不為 0
-n abc : 字符串長度不為 0
abc : 字符串不為空

六、文件測試運算符

文件測試運算符用于檢測 Unix 文件的各種屬性。

屬性檢測描述如下:

其他檢查符:

  • -S: 判斷某文件是否 socket。
  • -L: 檢測文件是否存在并且是一個符號鏈接。

實例

變量 file 表示文件 /var/www/runoob/test.sh,它的大小為 100 字節(jié),具有 rwx 權(quán)限。下面的代碼,將檢測該文件的各種屬性:

file="/var/www/runoob/test.sh"
if [ -r $file ]
then
   echo "文件可讀"
else
   echo "文件不可讀"
fi
if [ -w $file ]
then
   echo "文件可寫"
else
   echo "文件不可寫"
fi
if [ -x $file ]
then
   echo "文件可執(zhí)行"
else
   echo "文件不可執(zhí)行"
fi
if [ -f $file ]
then
   echo "文件為普通文件"
else
   echo "文件為特殊文件"
fi
if [ -d $file ]
then
   echo "文件是個目錄"
else
   echo "文件不是個目錄"
fi
if [ -s $file ]
then
   echo "文件不為空"
else
   echo "文件為空"
fi
if [ -e $file ]
then
   echo "文件存在"
else
   echo "文件不存在"
fi

執(zhí)行腳本,輸出結(jié)果如下所示:

文件可讀
文件可寫
文件可執(zhí)行
文件為普通文件
文件不是個目錄
文件不為空
文件存在

到此這篇關(guān)于Shell基本運算符的實現(xiàn)的文章就介紹到這了,更多相關(guān)Shell 基本運算符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 監(jiān)控php-fpm并自動重啟服務(wù)的shell腳本

    監(jiān)控php-fpm并自動重啟服務(wù)的shell腳本

    這篇文章主要介紹了監(jiān)控php-fpm并自動重啟服務(wù)的shell腳本,腳本的主要功能:不斷檢查網(wǎng)站的狀態(tài),如果異常就重啟php-fpm服務(wù),需要的朋友可以參考下
    2014-05-05
  • shell腳本批量將文件復(fù)制到指定的文件夾下

    shell腳本批量將文件復(fù)制到指定的文件夾下

    本文主要介紹了shell腳本批量將文件復(fù)制到指定的文件夾下,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • linux下非root用戶運行tomcat

    linux下非root用戶運行tomcat

    這篇文章主要介紹了linux下非root用戶運行tomcat ,需要的朋友可以參考下
    2017-12-12
  • shell 遞歸遍歷目錄下的所有文件并統(tǒng)一改名的方法

    shell 遞歸遍歷目錄下的所有文件并統(tǒng)一改名的方法

    今天小編就為大家分享一篇shell 遞歸遍歷目錄下的所有文件并統(tǒng)一改名的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • shell腳本實現(xiàn)日歷的屏幕控制

    shell腳本實現(xiàn)日歷的屏幕控制

    這篇文章主要為大家詳細(xì)介紹了shell腳本實現(xiàn)日歷的屏幕控制,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 一個強大的網(wǎng)絡(luò)分析shell腳本分享(實時流量、連接統(tǒng)計)

    一個強大的網(wǎng)絡(luò)分析shell腳本分享(實時流量、連接統(tǒng)計)

    這篇文章主要介紹了一個強大的網(wǎng)絡(luò)分析shell腳本分享,此腳本包含實時流量統(tǒng)計、連接統(tǒng)計強大功能,需要的朋友可以參考下
    2014-12-12
  • Linux 下載百度網(wǎng)盤大文件的方法

    Linux 下載百度網(wǎng)盤大文件的方法

    Linux 下沒有百度網(wǎng)盤客戶端,用瀏覽器下載速度慢得急死人,本文重點給大家介紹Linux 下載百度網(wǎng)盤大文件的方法,需要的朋友參考下吧
    2017-08-08
  • Linux 下mysql通過存儲過程實現(xiàn)批量生成記錄

    Linux 下mysql通過存儲過程實現(xiàn)批量生成記錄

    這篇文章主要介紹了Linux 下mysql通過存儲過程實現(xiàn)批量生成記錄的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Linux中cp命令的使用詳解

    Linux中cp命令的使用詳解

    cp?命令是?Linux?中一個重要的命令,你可能經(jīng)常會用到它,所以本文主要來和大家講講cp命令的具體使用,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-08-08
  • Linux中sftp常用命令整理

    Linux中sftp常用命令整理

    sftp命令是一款交互式的文件傳輸程序,不僅對傳輸?shù)乃行畔⑹褂胹sh加密,它還支持公鑰認(rèn)證和壓縮等功能。這篇文章整理了Linux中sftp的常用命令,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06

最新評論

玛曲县| 湛江市| 永新县| 娱乐| 丹阳市| 兴隆县| 大冶市| 益阳市| 武穴市| 芜湖县| 洛南县| 泸定县| 西城区| 长顺县| 弋阳县| 肥西县| 郁南县| 扎兰屯市| 吐鲁番市| 潮州市| 西充县| 凯里市| 吴忠市| 台北县| 建昌县| 和龙市| 青冈县| 禹州市| 临湘市| 焦作市| 靖西县| 宜城市| 永泰县| 诸暨市| 宜春市| 新巴尔虎左旗| 五常市| 龙井市| 龙州县| 西乌珠穆沁旗| 康平县|