在bash中,巧妙地運用變量,能夠大大減輕編程的工作量,下面讓我們來詳細了解一下bash的變量.
bash中的變量種類:
根據變量的生效范圍等標準:
本地變量:生效范圍為當前shell進程;對當前shell之外的其它shell進程,包括當前shell的子shell進程均無效
環境變量:生效范圍為當前shell進程及其子進程
局部變量:生效范圍為當前shell進程中某代碼片斷(通常指函數)
位置變量: $1, $2, …來表示,用于讓腳本在腳本代碼中調用通過命令行傳遞給它的參數
特殊變量: $?, $0, $*, $@, $#
本地變量:生效范圍為當前shell進程;對當前shell之外的其它shell進程,包括當前shell的子shell進程均無效
變量賦值: name=‘value’,
可以使用引用value:
(1) 可以是直接字串; name=“root"
(2) 變量引用: name="$USER"
(3) 命令引用: name=`COMMAND`, name=$(COMMAND)
變量引用: ${name}, $name
"":弱引用,其中的變量引用會被替換為變量值
'':強引用,其中的變量引用不會被替換為變量值,而保持原字符串
顯示已定義的所有變量: set
刪除變量: unset name
當變量不再需要時,要釋放變量,以減輕內存的負擔
環境變量(當前shell及其子進程均可引用)
變量聲明、賦值:
export name=VALUE
declare -x name=VALUE
變量引用: $name, ${name}
顯示所有環境變量:
export
env
printenv
刪除: unset name
bash有許多內建的環境變量: PATH, SHELL, USRE,UID,HISTSIZE, HOME, PWD, OLDPWD, HISTFILE, PS1
只讀和位置變量
只讀變量:只能聲時,但不能修改和刪除
readonly name
declare -r name
位置變量:在腳本代碼中調用通過命令行傳遞給腳本的參數
$1, $2, …:對應第1、第2等參數, shift [n]換位置
$0: 命令本身
$*: 傳遞給腳本的所有參數,全部參數合為一個字符串
$@: 傳遞給腳本的所有參數,每個參數為獨立字符串
$#: 傳遞給腳本的參數的個數
$@ $* 只在被雙引號包起來的時候才會有差異
示例:判斷給出的文件的行數
linecount="$(wc -l $1| cut -d' ' -f1)"
echo "$1 has $linecount lines."
[root@localhost testdir]# cat 1.sh #!bin/bash # ./2.sh "$@" echo ================= ./2.sh "$*" [root@localhost testdir]# cat 2.sh echo $1 echo $2 [root@localhost testdir]# bash 1.sh 11 22 11 22 ================= 11 22
原創文章,作者:hunter,如若轉載,請注明出處:http://www.www58058.com/36080