bash學習之表示式運用和函式(五)

2021-08-31 11:40:30 字數 2118 閱讀 3216

數**算在寫的時候是乙個必不可少的內容,但是在bash中多有的變數預設都是字串。因此,需要一些特殊的方法進行數**算。

1.bash的數**算

bash用想要進行數**算,一共有三種方法,expr ,let ,(())

expr 返回乙個表達是的右值,let,和(())實現了讓數學計算可高階語言一樣的功能

#!/bin/bash

#數**算

var1=1

var2=12

#var=`expr $var1 + $var2`

let var=var1+var2

echo

$var

echo

`expr $var1 + $var2`

((var_n=var1+var2))

echo

$var_n

執行結果:

expr用的時候必須用$引用來說明是當下的值,並且運算子的左右兩側都要有空格,* 運算的花必許用\進行轉義說明

let和(()) 實現了和高階語法中一樣的方法讓,但是他們中的數**算符兩側不能夠 有空格。

另外 bc 是數**算中的一種高階的數**算,可以實現浮點數型別的運算,並且可以實現一些數學函式,bc的運用一般用管道符|放在後面,前面表示式用雙引號括起來

程式2:

#!/bin/bash

#select語句用法

var1=2.2

var2=12c=`

echo

"$var1*

$var2"|bc

`echo

$cvar3=100

echo

"sqrt($var3)"|bc

echo

"$var3^2"

|bc

執行結果:

管道符和引號之間呢有空格,第乙個值輸兩個浮點數的乘積,第二個數是開根好,第三個數是平方

2.bash中的函式

函式也是我們編寫程式必不可少的乙個功能,bash也有自己風格的函式寫法,有兩種形式

function name

name(

)

bash的函式也可傳遞引數,可以在函式的後面新增引數的形式傳遞進去,在函式體沒表示的時候用標準的參數列式發進行表示$+數字

bash中變數的建立一般都是全域性變數,整個程式都能夠用的。因此,修改,建立變數的是後要特別注意可能出現的錯誤,當發現進需要在一定的範圍內用的變數的話,可以用關鍵子local生命乙個本地變數

函式可以用return來說明函式到了某乙個位置後直接退出函式,預設函式的退出值是0,如果非正常完成函式則會返回乙個非0的值。這裡和高階語法的用法是一樣的。在外面的主程式中的返回要用exit進行退出。

注意:這裡shell 和bash出現了差異,sh +檔名 執行bash檔案的話會不認function這個關鍵字,這是候要用 bash +檔名 去執行

#!/bin/bash

#bash函式的運用

var=10

function fun1

fun2(

)echo

"var= "

$var

fun1

fun1 "12"

echo

"var= "

$var

fun2

echo

"var= "

$var

執行結果:

可以看到,加完local關鍵子後,生命的變數就變成了本地變數,而未加的預設變數則是乙個全域性變數,函式傳遞引數類似與命令列傳遞引數的方法進行傳遞,而引用的方法也是和命令列中引數引用的方法一樣。

bash有關高階語言中常用的一些方法就到這裡,下面的章節將會講述bash中與系統相管的一些高階用法

bash正規表示式

1.1 正規表示式 正規表示式 regular expression 是一種字元模式 pattern 用來匹配字串中的子串。例如 ro t 可以匹配 root rooot等 ro t 可以匹配 rot root rooot等1.1 正規表示式元字元 元字元是具有特殊含義的字元,不同於字元表面的含義。...

bash正規表示式

星號 匹配它前面的字串或正規表示式任意次 包括0次 比如 1122 可能匹配的字串有 112 1122 1122222 1123131231 句號.匹配除換行符之外的任意乙個字元。比如 112.將匹配112 至少乙個字元 可能匹配的字串有 1121 1122 112abc 1123131231 但不...

lua學習之表示式

3.1 算術運算子 二元運算子 加減乘除冪 一元運算子 負值 這些運算子的運算元都是實數。3.2 關係運算子 如果兩個值d型別不同,則不等 lua通過引用比較tables,userdata,functions,也就是當且僅當表示同乙個物件時才相等。3.3 邏輯運算子 and or not a and...