小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

linux declare

 ssassg 2011-09-14

用途說明

declare命令是bash的一個(gè)內(nèi)建命令,它可以用來聲明shell變量,設(shè)置變量的屬性(Declare variables and/or give them attributes)。該命令也可以寫作typeset。雖然人們很少使用這個(gè)命令,如果知道了它的一些用法,就會(huì)發(fā)現(xiàn)這個(gè)命令還是挺有用的。

 

常用參數(shù)

格式:declare
格式:typeset
格式:declare -p
格式:typeset -p
顯示所有變量的值。 
 
格式:declare -p var
格式:typeset -p var
顯示指定變量var的值。
 
格式:declare var=value
格式:typeset var=value
格式:var=value
聲明變量并賦值。
 
格式:declare -i var
格式:typeset -i var
將變量var定義成整數(shù)。在之后就可以直接對表達(dá)式求值,結(jié)果只能是整數(shù)。如果求值失敗或者不是整數(shù),就設(shè)置為0。 
 
格式:declare -r var
格式:typeset -r var
格式:readonly var
將變量var聲明為只讀變量。只讀變量不允許修改,也不允許刪除。
 
格式:declare -a var
格式:typeset -a var
將變量var聲明為數(shù)組變量。但這沒有必要。所有變量都不必顯式定義就可以用作數(shù)組。事實(shí)上,在某種意義上,似乎所有變量都是數(shù)組,而且賦值給沒有下標(biāo)的變量與賦值給"[0]"相同。
 
 格式:declare -f
格式:typeset -f
顯示所有自定義函數(shù),包括名稱和函數(shù)體。
 
 格式:declare -F
格式:typeset -F
顯示所有自定義函數(shù)名稱。
 
格式:declare -f func
格式:typeset -f func
只顯示指定函數(shù)func的函數(shù)定義。
 
格式:declare -x var
格式:typeset -x var
格式:export var
將變量var設(shè)置成環(huán)境變量,這樣在隨后的腳本和程序中可以使用。
 
格式:declare -x var=value
格式:typeset -x var=value
格式:export var=value
將變量var設(shè)置陳環(huán)境變量,并賦值為value。

 

使用示例

示例一 declare是內(nèi)建命令

[root@web ~]# type -a declare
declare is a shell builtin
[root@web ~]#

[root@jfht ~]# type -a typeset
typeset is a shell builtin
[root@jfht ~]#

 

示例二 declare -i之后可以直接對表達(dá)式求值

[root@web ~]# x=6/3
[root@web ~]# echo $x
6/3
[root@web ~]# declare -i x
[root@web ~]# echo $x    
6/3
[root@web ~]# x=6/3
[root@web ~]# echo $x
2

如果變量被聲明成整數(shù),可以把表達(dá)式直接賦值給它,bash會(huì)對它求值。

[root@jfht ~]# x=error
[root@jfht ~]# echo $x
0

如果變量被聲明成整數(shù),把一個(gè)結(jié)果不是整數(shù)的表達(dá)式賦值給它時(shí),就會(huì)變成0.

[root@jfht ~]# x=3.14
-bash: 3.14: syntax error: invalid arithmetic operator (error token is ".14")
如果變量被聲明成整數(shù),把一個(gè)小數(shù)(浮點(diǎn)數(shù))賦值給它時(shí),也是不行的。因?yàn)閎ash并不內(nèi)置對浮點(diǎn)數(shù)的支持。
[root@web ~]#

[root@jfht ~]# declare +i x

此命令的結(jié)果是取消變量x的整數(shù)類型屬性。
[root@jfht ~]# x=6/3
[root@jfht ~]# echo $x
6/3

因?yàn)樽兞縳不是整型變量,所以不會(huì)自動(dòng)對表達(dá)式求值??梢圆捎孟旅鎯蓚€(gè)方式。

[root@jfht ~]# x=$[6/3]
[root@jfht ~]# echo $x
2
[root@jfht ~]# x=$((6/3))
[root@jfht ~]# echo $x  
2
[root@jfht ~]#

 

示例三 聲明只讀變量

[root@jfht ~]# declare -r r
[root@jfht ~]# echo $r

[root@jfht ~]# r=xxx
-bash: r: readonly variable
[root@jfht ~]# declare -r r=xxx
-bash: declare: r: readonly variable
[root@jfht ~]# declare +r r   
-bash: declare: r: readonly variable
[root@jfht ~]#
[root@jfht ~]# declare +r r
-bash: declare: r: readonly variable
[root@jfht ~]#
[root@jfht ~]# unset r
-bash: unset: r: cannot unset: readonly variable
[root@jfht ~]#

 

示例四 聲明數(shù)組變量(實(shí)際上,任何變量都可以當(dāng)做數(shù)組來操作)

[root@jfht ~]# declare -a names
[root@jfht ~]# names=Jack
[root@jfht ~]# echo ${names[0]}
Jack
[root@jfht ~]# names[1]=Bone
[root@jfht ~]# echo ${names[1]}
Bone
[root@jfht ~]# echo ${names}
Jack
[root@jfht ~]# echo ${names[*]}
Jack Bone
[root@jfht ~]# echo ${#names}
4

直接引用names,相當(dāng)于引用names[0]
[root@jfht ~]# echo ${#names[*]}
2

[root@jfht ~]# echo ${names[@]}
Jack Bone
[root@jfht ~]# echo ${#names[@]}
2

[root@jfht ~]# declare -p names   
declare -a names='([0]="Jack" [1]="Bone")'
[root@jfht ~]#

 

示例五 顯示函數(shù)定義

[root@jfht ~]# declare -F
declare -f add_jar
declare -f add_jar2
declare -f add_jar3
[root@jfht ~]# declare -f
add_jar ()
{
    [ -e $1 ] && CLASSPATH=$CLASSPATH:$1
}
add_jar2 ()
{
    if [ -e $1 ]; then
        CLASSPATH=$CLASSPATH:$1;
    else
        if [ -e $2 ]; then
            CLASSPATH=$CLASSPATH:$2;
        fi;
    fi
}
add_jar3 ()
{
    if [ -e $1 ]; then
        CLASSPATH=$CLASSPATH:$1;
    else
        if [ -e $2 ]; then
            CLASSPATH=$CLASSPATH:$2;
        else
            if [ -e $3 ]; then
                CLASSPATH=$CLASSPATH:$3;
            fi;
        fi;
    fi
}
[root@jfht ~]# declare -f add_jar
add_jar ()
{
    [ -e $1 ] && CLASSPATH=$CLASSPATH:$1
}
[root@jfht ~]# declare -F add_jar
add_jar
[root@jfht ~]# declare -F add_
[root@jfht ~]# declare -F add_*
[root@jfht ~]# declare -F 'add_*'
[root@jfht ~]#

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多