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 $c32、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
文章列表
留言列表