shell開發學習

最近做一個小項目,需要用編寫個腳本做監控,順便記錄下使用到的內容:

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並沒有被改變。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章