文章出處

1、declare(typeset)

在shell中,內建(builtin)命令declare與typeset用法相同,格式如下:

declare [-aAfFgilnrtux] [-p] [name[=value] ...]typeset [-aAfFgilnrtux] [-p] [name[=value] ...]

declare命令用于聲明變量,可以給變量設置屬性。如果沒有指定name,則顯示相應變量的值。下面介紹declare命令各選項的含義。

“-p”:顯示每個name的屬性和值,不指定name時,則顯示相應的所有變量的屬性和值。
“-f”:用于函數,顯示函數定義。
“-F”:用于函數,只顯示函數名字,不顯示函數定義。
“-a”:用于索引(下標)數組。
“-A”:用于關聯(鍵值對)數組。
“-i”:用于整數,可以進行數學運算。
“-n”:用于引用變量,這個變量name的值實際上是變量value的值,value作為一個變量來使用。不能用于數組。
“-l”:對變量賦值時,值的大寫字母全部轉換為小寫。
“-u”:對變量賦值時,值的小寫字母全部轉換為大寫。
“-r”:聲明變量只讀,不能被修改,也不能unset。
“-g”:在函數中declare命令效果同內置命令local,變量的影響范圍是局部的,除非使用了“-g”。
“-x”:等效于內置命令export。
“-t”:給每個name設置trace屬性,對函數來說,可以繼承調用shell的trap命令的DEBUG和RETURN屬性,對變量則沒什么意義。
對于上面的選項,可以使用加號“+”代替減號“-”,效果是關閉對應的屬性,但是,“+a”和“+r”無效。

下面是declare命令在數學運算中的例子:

$ a=1$ b=2$ echo $a+$b1+2$ declare -i a=1$ declare -i b=2$ declare -i c$ c=$a+$b$ echo $c3
2、local

在shell中,內建(builtin)命令local,格式如下:

local [option] [name[=value] ...]

local命令只能用于shell函數,聲明變量name為局部變量,只對當前函數或其子進程有效,選項option可以是內建命令declare可以接受的選項。

不在shell函數中使用local命令會出錯:

$ localbash: local: can only be used in a function

在shell函數中使用local命令:

$ cat test.sh #!/bin/bashfoo=globalecho $foobar(){    echo $foo    local foo=local    echo $foo}barecho $foo$ bash test.sh globalgloballocalglobal

在shell函數中不使用local命令:

$ cat test.sh #!/bin/bashfoo=globalecho $foobar(){    echo $foo    foo=local    echo $foo}barecho $foo$ bash test.sh globalgloballocallocal
就愛閱讀www.92to.com網友整理上傳,為您提供最全的知識大全,期待您的分享,轉載請注明出處。
歡迎轉載:http://www.kanwencang.com/bangong/20161206/63516.html

文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()