最近做一個小項目,需要用編寫個腳本做監控,順便記錄下使用到的內容:
1.shell的局部變量定義local
當shell腳本中需要使用的函數時,這個時候就可以選擇使用局部變量,還是很有必要的。可以避免傳入函數中的同名變量名在函數內被修改而影響腳本全局變量的值。特別是腳本在不同函數中使用索引變量i時,踩了很多坑。
#!/bin/sh
local_fun()
{
local i
arr=(a b c)
for((i=0;i<3;i++))
do
echo "arr[${i}]= ${arr[$i]}"
done
echo "local_fun i=$i"
}
i=10
local_fun
echo "i=$i"
執行結果如下:
函數local_fun修改了i的值,顯然函數調用後,i的值也被修改了。當一個腳本中可能會在不同的函數中使用索引i,爲了避免造成影響,可以在函數local_fun中增加一行local i定義,如下:
#!/bin/sh
local_fun()
{
local i
arr=(a b c)
for((i=0;i<3;i++))
do
echo "arr[${i}]= ${arr[$i]}"
done
echo "local_fun i=$i"
}
執行結果如下圖:
我們可以看到,函數local_fun中使用的i使用local修飾後,使函數中i的作用域僅僅限於函數中。全局變量i並沒有被改變。