Shell指令碼的基本知識點整理 3

2021-10-19 12:19:40 字數 3938 閱讀 4584

建立函式

函式格式

function name

示例:

#!

/bin/bash

function func1

count=

1while

[ $count -le 5]do

func1

count=$[ $count +1]

done

echo "now this is the end of the script"

函式返回值

#!

/bin/bash

function func1

echo "test the function:"

func1

echo "the exit status is:$?"

輸出:test the function:

trying to display a non-exitent file

ls: 無法訪問'badfile': 沒有那個檔案或目錄

the exit status is:2

函式退出的狀態碼是2

內部返回使用 return 返回返回值。

shell 函式的返回值只能是乙個介於 0~255 之間的整數,其中只有 0 表示成功,其它值都表示失敗。

外部呼叫使用 $? 獲取返回值。

注意事項:

1) 函式一結束就取返回值。

2) 退出的狀態碼必須是0~255。

函式輸出和函式中使用變數

#!

/bin/bash

function db1

result=$(db1)

echo "the new value is $"

向函式傳遞引數

使用 $# 判斷函式引數的個數,使用 $n ($1、$2、$3…)使用函式的各個引數。

#!

/bin/bash

function addem

value=$(addem 1015)

echo $value

value=$(addem 10

) echo $value

value=$(addem 10

1520

) echo $value

函式中處理全域性變數

#!

/bin/bash

function addem

read -p "enter a value :" value

addem

echo "new value: $"

輸出:enter a value :

45new value:

90

函式中處理區域性變數

無需再函式中使用全域性變數,函式內部任何變數都可以被宣告成區域性變數。加上 local 的關鍵字就可以了。local關鍵字保證了變數只侷限在這函式中,如果函式外有同樣名字的變數,shell會保持這兩個變數的值是分離的。

local temp

local temp=$[ $value + 5 ]

示例:

#!

/bin/bash

function addem

temp=

4value=

6addem

echo "the reult is $"

輸出:the reult is 22

陣列變數和函式

陣列操作

1.直接定義

陣列名=(value1 value2 value3 …)

value可以是數值、字串、單個字元,以空格分隔

若value中有空格鍵或者tab鍵則必須使用雙引號或者單引號

2.declare定義

declare -a 陣列名=(value1 value2 value3 …)

declare選項

-a:宣告陣列

-i:宣告整型變數

-r:宣告乙個唯讀變數

-f:列印指令碼中的所有定義的函式的全部內容

-f:僅列印指令碼中所有定義的函式的名字

3.陣列相關操作

a rr

ay[∗

]==ar

ray[

∗]=獲取陣列所有元素

katex parse error: expected '}', got '#' at position 2: =

獲取陣列的元素個數即陣列長度

! ar

ray[

∗]==

!array

[∗]=

獲取陣列的所有索引

$從陣列索引index處開始取n個元素

#!

/bin/bash

function testit "

}myarray=(1

2345

)echo "ths original array is $"

testit $

輸出:ths original array is 123

45the new array value is :12

345

使用陣列裡面值

#!

/bin/bash

function testit "

for value in $

do sum=$[ $sum + $value]

done

echo "sum:$"

}myarray=(1

2345

1020

304050)

echo "ths original array is $"

testit $

輸出:ths original array is 123

451020

3040

50the new array value is :12

34510

2030

4050

sum:

165

從函式中返回陣列

#!

/bin/bash

function testit "

echo "newarray:$"

echo "elements:$"

for i in $(seq 0 $elements)

do newarray[i]

=$[ origarray[i]*2

];done

echo $

}myarray=(1

2345

)echo "the original array is : $"

arg1=$(echo $

)echo "arg1:$"

result=

($(testit $arg1)

)echo "the new array is : $"

輸出:the original array is :12

345arg1:12

345the new array is : origarray:12

345 newarray:12

345 elements:42

46810

函式的遞迴

#!

/bin/bash

function factorial

read -p "enter value:" value

result=$(factorial $value)

echo "the factorial of $value is: $result"

輸出:enter value:

5the factorial of 5 is:

120

shell指令碼的基本知識

指令碼中命令的直譯器 記錄命令執行的過程和執行邏輯,以便以後重複執行 指令碼可以批量處理主機 指令碼可以定時處理主機 bin bash 幻數 1 手動在環境中開啟指定直譯器 sh script.sh 2 直接在當前環境中執行shell中的命令不開啟新的shell sourece script.sh ...

關係型資料庫基本知識點整理

1.碼 能夠唯一標識一組元組的屬性集 2.主鍵 能夠唯一標識一組元組的屬性集 主鍵是從候選鍵中選擇乙個作為主鍵。3.候選碼,能夠唯一標識一組元組的屬性集 候選碼的任一真子集都不能唯一標識一組元組。主屬性 候選碼裡的屬性的並集 非主屬性 除了主屬性的屬性。這一幅圖來自 關係型資料庫的正規化 第一正規化...

知識點整理

一 標準庫容器和演算法 1.順序容器 與前面類似 2.關聯容器 map和multimap 元素包含key 鍵 和值 value 兩部分 按照鍵對元素排序 map不允許重複元素出現,但multimap可以 set和multliset 是包含已排序物件的關聯容器 只是單純的鍵的集合 set不允許重複鍵出...