我的shell編程(六)--環境變量和局部變量

變量

  • 什麼是變量?
    變量即可以變化的量

  • 變量名稱注意事項

只能包含字母、數字、下劃線,並且不能以數字開頭
不應該跟系統中已有的環境變量重名,儘量不要全部使用大寫,儘量不要用“_”下劃線開頭
最好做到見名知義
不能使用程序中的保留字,例如if、for等

  • 變量類型
字符型
數值型
整型
浮點型
布爾型
  • 變量操作
設置變量
引用變量
撤銷變量
單引號與雙引號的區別
  • bash變量類型
環境變量
本地變量(局部變量)
位置變量
特殊變量(bash內置的,用來保存某些特殊數據的變量,也稱系統變量)

  • 本地變量
VAR_NAME=VALUE      //本地變量,作用域爲當前shell進程。對當前shell外的其它shell進程,包括當前shell的父shell、子shell進程均無效

local VAR_NAME=VALUE    //局部變量,作用域爲當前代碼段,常用於函數
  • 環境變量
export VAR_NAME=VALUE   //作用域爲當前shell進程及其子進程
  • 位置變量
    $1,$2,$3,… //用來引用腳本的參數
    shift [num] //位置變量使用完以後退出,後面的參數向前推進
  • 特殊變量
$#      //是傳給腳本的參數個數
$0      //是腳本本身的名字
$!      //是shell最後運行的後臺Process的PID
$@      //是傳給腳本的所有參數的列表
$*      //是以一個單字符串顯示所有向腳本傳遞的參數,與位置變量不同,參數可超過9個
$$      //是腳本運行的當前進程ID號
$?      //是顯示上條命令的退出狀態,0表示沒有錯誤,其他表示有錯誤

  • bash內建環境變量
PATH
SHELL
UID
HISTSIZE
HOME
PWD
HISTFILE
PS1
  • 只讀變量(常量)
    readonly VAR_NAME=VALUE /

局部變量和全局變量

全局變量

  • 不做體術聲明,shell中變量都是全局變量
  • Tips :大型腳本程序中函數中慎用全局變量

局部變量

  • 定義變量時,使用local關鍵字
  • 函數內和外若存在同名變量,則函數內部變量覆蓋外邊變量
[root@localhost ~]# cat var.sh 
#!/bin/bash
#
var1="hello world"           //首先我定義一個全局變量
function test                //函數名叫test
{
	var2=87                  //變量var2=87
}
	echo $var1               //輸出全局變量var1
	echo $var2               //輸出函數變量var2
test						//調用test函數

	echo $var1 				//在輸出var1 var2
	echo $var2

function test1

{
	echo $var2

}

test1
[root@localhost ~]# sh var.sh 
hello world

hello world
87
[root@localhost ~]# vim var.sh
[root@localhost ~]# sh var.sh 
hello world

hello world
87
87
[root@localhost ~]# 
[root@localhost ~]# cat var.sh 
#!/bin/bash
#
var1="hello world"         //全局變量
function test
{
	local var2=87           //局部變量
}
	echo $var1  
	echo $var2
test

	echo $var1
	echo $var2

[root@localhost ~]# sh var.sh   //運行腳本後,只會調用全局的,
hello world

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