Linux中shell变量作用域笔记
變量的作用域又可以叫做"命名空間",表示變量的上下文,同名的變量可以在多個命名空間定義,彼此互相獨立。
在linux系統中,不同的進程ID的Shell默認為一個不同的命名空間。
比如:
cat NameSpace1.sh
內容如下:
#!/bin/bash
var1=100
echo ${var1}
cat NameSpace2.sh
內容如下:
#!/bin/bash
var1=200
echo ${var1}
執行腳本:
bash NameSpace1.sh
輸出:100
bash NameSpace2.sh
輸出:200
注意:Shell變量的作用域是在本Shell內,屬于當前Shell的全局變量,也就是從定義該變量的地方開始到結束,或到主動使用unset刪除了該變量的地方為止。在變量的作用域內,該變量都是可見的,并且在函數內是可以訪問、也是可以修改的,這和一般的編程語言是不同的。
比如:
cat NameSpace3.sh
內容如下:
#!/bin/bash
var2=100
function ch_var()
{
var2=300
}
echo ${var2}
ch_var
echo ${var2}
執行腳本:bash NameSpace3.sh
輸出:
100
200
#說明var2變量的值發生了改變
說明:Shell默認以Shell的進程ID作為一個命名空間,所以即便在函數中聲明變量,該變量也會在全局生效。這樣如果在函數外聲明變量可能會
由于函數的執行造成函數變量值發生改變,這樣如果腳本有問題也不便于找到問題。一般情況下會在函數體內聲明變量,需要指定未局部變量,這樣就會
和函數外的變量區分開,互不影響。
比如:local var2=500 #函數內可以這樣定義
總結
以上是生活随笔為你收集整理的Linux中shell变量作用域笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 连续赋值与求值顺序var a = {n:
- 下一篇: Linux中Shell的转义用法笔记