shell編程之變量詳解

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

由測試結果能夠看出帶引號的$*輸出結果是一個字段而帶引號的$@輸出的參數每一個都是獨立的字段

相關文章
相關標籤/搜索