變量
-
什麼是變量?
變量即可以變化的量 -
變量名稱注意事項
只能包含字母、數字、下劃線,並且不能以數字開頭
不應該跟系統中已有的環境變量重名,儘量不要全部使用大寫,儘量不要用“_”下劃線開頭
最好做到見名知義
不能使用程序中的保留字,例如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