bash中的變量的種類shell
1.本地變量 : 生效範圍爲當前shell進程;對當前shell以外的其餘shell進程,包括當前shell的子shell進程均無效centos
變量賦值: name='value'bash
使用引用value:ide
(1) 直接寫字符 name="root"函數
(2)變量引用 name="$USER" 測試
(3)命令引用 name=`command`,name=$()centos7
變量引用: ${name},$namespa
顯示已定義的全部變量: set 命令行
刪除變量: unset name進程
2.環境變量 : 生效範圍爲當前shell進程及其子進程fFs
變量聲明,賦值:
export name ="value"
declare -x name="value"
變量引用: $name , ${name}
顯示全部環境變量:
export
env
printenv
刪除: unset name
3.局部變量 : 生效範圍爲當前shell進程中的代碼片斷(一般指函數)
4.位置變量 : $1,$2,...來表示,用於讓腳本代碼中調用經過命令行傳遞給它的參數
5.特殊變量:
$? 上一次退出程序的退出值
$0 : 執行的腳本的文件名
$* : 表明""$1c$2c$3c$4"",其中c爲分隔字符,默認爲空格鍵,表明$1 $2 $3 $4
$@ : 表明"$1" ,"$2 ","$3" ,"$4" 之意,每一個變量都是獨立的,通常記憶$@
$*和$@在被雙引號包起來的時候纔會有差別
在雙引號引發來的狀況:
$*: 將全部的參數認爲是一個字段
$@: 全部的參數每一個都是獨立的字段
在沒有雙引號的狀況下$*和$@是同樣的
示例:判斷給出文件的行數
linecount="$(wc -l |$1 |cut -d " " -f1)"
echo "$1 has $linecount lines"
實例:
寫一個腳本測試$*和$@顯示結果的個數
1.$*和$@帶引號
#!/bin/bash test() { echo "$#" } echo 'the number of parameter in "$@" is '$(test "$@") echo 'the number of parameter in "$*" is '$(test "$*")
運行結果
[zhang@centos7 shells]$ bash 2.sh a b c d the number of parameter in "$@" is 4 the number of parameter in "$*" is 1
2..$*和$@不帶引號
#!/bin/bash test() { echo "$#" } echo 'the number of parameter in "$@" is '$(test $@) echo 'the number of parameter in "$*" is '$(test $*)
運行結果
[zhang@centos7 shells]$ bash 2.sh a b c d the number of parameter in "$@" is 4 the number of parameter in "$*" is 4
由測試結果能夠看出帶引號的$*輸出結果是一個字段而帶引號的$@輸出的參數每一個都是獨立的字段