天天看點

運算符----Bash基本運算符

Bash最基本的文法

循環和條件判斷—Bash

Vim快捷鍵

運算符----Bash

數組----Bash

字元串—Bash

變量----Bash

基本運算符

一般都有哪些運算符?

  • 算數運算符
  • 關系運算符
  • 布爾運算符
  • 字元串運算符
  • 檔案測試運算符

巨人的肩膀:

  • Bash腳本教程
  • 菜鳥教程

算數運算符

Bash

不支援簡單的數學運算,比如

a=2+2

,這是不對的。但是,可以通過其他的指令來實作,比如

awk

expr

expr

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

注意使用的是反引号`,不是單引号,也不是雙引号,也不需要{}、()

#!/bin/bash

var=`expr 2 + 2`
echo "兩數之和:$val"
#輸出
4
#expr與運算之間要有空格的,注意看上述代碼
           

接下來就好說喽。

+-*/

最基本的

運算法 說明 舉例
+ 加法

expr $a + $b

- 減法
* 乘法
/ 除法
% 取餘

expr $a % $b

** 指數

還有

++、--

,這種自增/減運算

運算符 說明 舉例
++ 自增運算(字首或字尾)

expr ==$a

自減運算(字首或字尾) echo $((a–))

進一步,取餘,指派,相等,不相等。可以觀察發現,指派、比較并不需要

expr

條件表達式要放在方括号之間

運算法 說明 舉例
= 指派 a=$b
== 比較是否相等 [$a == $b]
!= 比較是否不相等 [$a != $b]
#!/bin/bash
#author:xxxx
#url:xxxx

a=10
b=20

val=`expr $a + $b`
echo "a + b : $val"

val=`expr $a \* $b` #這裡需要轉義字元\
echo "a * b : $val"
           

當然也可以不适用

expr

,可以

((...))

;比如

((foo=5+5))

關系運算符

關系運算符與算數運算符,怎麼說呢?算數運算符有加減乘除取餘,甚至有等于不等于,但是沒有大于小于,不大于,不小于。是以呢,關系可以是算數運算符的補充。

關系運算符隻支援數字,不支援字元串,除非字元串是數字**

相等不相等、大于等于小于,不大于,不小于

比如a=10,b=20

運算符 說明 舉例
-eq 比如兩數是否相等,相等傳回ture

[$a -eq $b]

-ne 比較兩數是否不相等,不相等傳回ture

[$a -ne $b]

-gt t表示比較大小;g表示great;左邊是否大于右邊,是傳回ture

[$a -gt $b]

-lt l表示little;左邊是否小于右邊,是傳回ture

[$a -lt $b]

-ge g表示great;e表示equal;左邊是否大于等于右邊

[$a -ge $b]

-le l表示little;e表示equal;左邊是否小于等于右邊

[$a -le $b]

布爾運算符

非運算---- !

或運算---- o (表示or)

與運算---- a (表示all)

邏輯運算符

&&

邏輯的 AND

||

邏輯的OR

字元串運算符

字元串主要是比對字元串或是檢測字元串是否為空啊

假定變量 a 為 “abc”,變量 b 為 “efg”

運算符 說明 舉例
= 兩個字元串是否相等
!= 兩個字元串是否不相等
-z 檢測字元串長度是否為0;z表示zero

[-z $a]

-n 檢測字元串是否有值;n表示有值
$ 檢測字元串是否為空

檔案測試運算法

最容易記住的是權限,

-r -w -x

,可讀可寫可執行

操作符 說明 舉例
-r file 檢測檔案是否可讀

[-r $file]

-w file 檢測檔案是否可寫

[-w $file]

-x file 檢測檔案是否可執行

[-x $file]

-d -b -c

是否是目錄檔案、塊裝置檔案、字元裝置檔案

操作符 說明 舉例
-d file 檢測是否是目錄檔案
-b file 檢測是否是塊裝置
-c file 檢測是否是字元裝置
-p file 檢測是否是有名管道

[-p $file]

檢測檔案是否為空,是否存在(包括目錄)

操作符 說明 舉例
-e file e表示exist

[-e $file]

-s file 檢測是否為空

其他檢查符:#這個用的時候可以查

  • -S: 判斷某檔案是否 socket。
  • -L: 檢測檔案是否存在并且是一個符号連結。