建立函式
函式格式
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不允許重複鍵出...