Linux下的Shell编程(2)环境变量和局部变量
Shell Script是一種弱類型語言,使用變量的時候無需首先聲明其類型。
局部變量在本地數據區分配內存進行存儲,這個變量歸當前的Shell所有,任何子進 程都不能訪問本地變量。這些變量與環境變量不同,環境變量被存儲在另一內存區,叫做用戶環境區,這塊內存中的變量可以被子進程訪問。變量賦值的方式是:
variable_name = variable_value
如果對一個已經有值的變量賦值,新值將取代舊值。取值的時候要在變量名前加$,$variable_name可以在引號中使用,這一點和其他高級語言是明顯不同的。如果出現混淆的情況,可以使用花括號來區分。
例如:echo "Hi, $as",不會輸出“Hi, hello worlds”,而是輸出“Hi,”。這是因為Shell把$as當成一個變量,而$as未被賦值,其值為空。正確的方法是:echo "Hi, ${a}s"
單引號中的變量不會進行變量替換操作。
?
變量無需事先聲明,需要給變量賦值時,可以這么寫: varname=值 [var2=val2 ....]
請注意這邊等號左右不能有空格。 要取用一個變量的值,只需在變量名前面加一個 $: # assign a="hello world"? # 等號兩邊均不能有空格存在 # print printf '%s\n' "A is: $a"
其輸出結果如下: A is: hello world
有時候變量名可能會和其它文字混淆,比如: num=2 echo "this is the $numnd"?? # 輸出 this is the?????? — shell 嘗試尋找 $numnd 的值 echo "this is the ${num}nd" # 輸出 this is the 2nd?? — 修好了!
# 花括號可以隔開變量名,但是放歪了的話… echo "this is the {$num}nd" # 輸出 this is the {2}nd — 切是切開了,但是…
?
var=1
var=$(expr "$var" + 1) # expr 收到三個參數 '1' '+' '1',
?
關于變量,還需要知道幾個與其相關的Linux命令。
env用于顯示用戶環境區中的變量及其取值;
set用于顯示本地數據區和用戶環境區中的變量及其取值;
unset用于刪除指定變量當前的取值,該值將被指定為NULL;
export命令用于將本地數據區中的變量轉移到用戶環境區。
?
轉載于:https://www.cnblogs.com/lexiaofei/p/6421450.html
總結
以上是生活随笔為你收集整理的Linux下的Shell编程(2)环境变量和局部变量的全部內容,希望文章能夠幫你解決所遇到的問題。