亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: [轉(zhuǎn)]Linux 變數(shù)設(shè)定規(guī)則 $ [系統(tǒng)變數(shù) 大寫 $PATH ---> 查閱變數(shù)內(nèi)容 echo] [打印本頁]

作者: shuge_guet    時間: 2009-10-27 23:04
標(biāo)題: [轉(zhuǎn)]Linux 變數(shù)設(shè)定規(guī)則 $ [系統(tǒng)變數(shù) 大寫 $PATH ---> 查閱變數(shù)內(nèi)容 echo]

Linux 變數(shù)設(shè)定規(guī)則 $ [系統(tǒng)變數(shù) 大寫 $PATH ---> 查閱變數(shù)內(nèi)容 echo]


  • 變數(shù)與變數(shù)內(nèi)容以等號『=』來連結(jié);
  • 等號兩邊不能直接接空白字元;
  • 變數(shù)名稱只能是英文字母與數(shù)字,但是數(shù)字不能是開頭字元;
  • 若有空白字元可以使用雙引號『 " 』或單引號『 ' 』來將變數(shù)內(nèi)容結(jié)合起來,但須要特別留意, 雙引號內(nèi)的特殊字元可以保有變數(shù)特性,但是單引號內(nèi)的特殊字元則僅為一般字元;
  • 必要時需要以跳脫字元『 \ 』來將特殊符號 ( 如 Enter, $, \, 空白字元, ' 等 ) 變成一般符號;
  • 在一串指令中,還需要藉由其他的指令提供的資訊,可以使用 quote 『 ` command` 』;(特別特別注意,那個 ` 是鍵盤上方的數(shù)字鍵 1 左邊那個按鍵,而不是單引號!)
  • 若該變數(shù)為擴(kuò)增變數(shù)內(nèi)容時,則需以雙引號及 $變數(shù)名稱 如:『 "$PATH":/home』繼續(xù)累加內(nèi)容;
  • 若該變數(shù)需要在其他子程序執(zhí)行,則需要以 export 來使變數(shù)變成環(huán)境變數(shù), 如『export PATH』;
  • 通常大寫字元為系統(tǒng)預(yù)設(shè)變數(shù),自行設(shè)定變數(shù)可以使用小寫字元,方便判斷 ( 純粹依照使用者興趣與嗜好 ) ;
  • 取消變數(shù)的方法為:『unset 變數(shù)名稱』。
  • 在變數(shù)的設(shè)定當(dāng)中,單引號與雙引號的用途有何不同?
  • 單引號與雙引號的最大不同在於雙引號仍然可以保有變數(shù)的內(nèi)容,但單引號內(nèi)僅能是一般字元 ,而不會有特殊符號。
    環(huán)境變數(shù)的說明: env |export
    範(fàn)例一:列出目前的 shell 環(huán)境下的所有環(huán)境變數(shù)與其內(nèi)容。
    [root@linux ~]# env
    HOSTNAME=googol.tw         
    SHELL=/bin/bash            
    TERM=xterm                 
    HISTSIZE=1000              
    USER=root                  
    LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:
    or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=0
    0;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=
    00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;3
    1:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00
    ;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:
    ENV=/root/.bashrc         
    MAIL=/var/spool/mail/root  
    PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin:
    /root/bin                  
    INPUTRC=/etc/inputrc      
    PWD=/root                  
    LANG=en_US.UTF-8           
    HOME=/root                 
    _=/bin/env                 env 是 environment (環(huán)境) 的簡寫啊~ 上面的例子當(dāng)中,是列出來所有的環(huán)境變數(shù)。當(dāng)然,如果使用 export 也會是一樣的內(nèi)容~ 只不過, export 還有其他額外的功能就是了,我們等一下再提這個 export 指令。 那麼上面這些變數(shù)有些什麼功用呢?底下我們就一個一個來分析分析!

    • HOME : 代表使用者的家目錄。還記得我們可以使用 cd ~ 去到使用者的家目錄嗎?或者利用 cd 就可以直接回到使用者家目錄了。那就是取用這個功能啦~ 有很多程式都可能會取用到這個變數(shù)的值喔!
    • SHELL : 告知我們,目前這個環(huán)境使用的 SHELL 是哪支程式? 如果是 bash 的話,預(yù)設(shè)是 /bin/bash 的啦!
    • HISTSIZE : 這個與『歷史命令』有關(guān),亦即是, 我們曾經(jīng)下達(dá)過的指令可以被系統(tǒng)記錄下來,而記錄的『筆數(shù)』則是由這個值來設(shè)定的。
    • ENV : 這個使用者所使用的個人化環(huán)境設(shè)定檔的讀取檔案。
    • MAIL : 當(dāng)我們使用 mail 這個指令在收信時,系統(tǒng)會去讀取的郵件信箱檔案 (mailbox)。
    • PATH : 就是執(zhí)行檔搜尋的路徑啦~目錄與目錄中間以冒號(:)分隔, 由於檔案的搜尋是依序由 PATH 的變數(shù)內(nèi)的目錄來查詢,所以,目錄的順序也是重要的喔。
    • LANG : 這個重要!就是語系檔案囉~很多資料都會用到他, 舉例來說,當(dāng)我們在啟動某些 perl 的程式語言檔案時,他會主動的去分析語系資料檔案, 如果發(fā)現(xiàn)有他無法解析的編碼語系,可能會產(chǎn)生錯誤喔!一般來說,我們中文編碼通常是 zh_TW.Big5 或者是 zh_TW.UTF-8,這兩個編碼偏偏不容易被解譯出來,所以,有的時候,可能需要修訂一下語系資料。 這部分我們會在下個小節(jié)做介紹的!
    • RANDOM : 這個玩意兒就是『隨機(jī)亂數(shù)』的變數(shù)啦!目前大多數(shù)的 distributions 都會有亂數(shù)產(chǎn)生器,那就是 /dev/random 這個檔案。 我們可以透過這個亂數(shù)檔案相關(guān)的變數(shù) ($RANDOM) 來隨機(jī)取得亂數(shù)值喔。在 BASH 的環(huán)境下,這個 RANDOM 變數(shù)的內(nèi)容,介於 0~32767 之間,所以,你只要 echo $RANDOM 時,系統(tǒng)就會主動的隨機(jī)取出一個介於 0~32767 的數(shù)值。萬一我想要使用 0~9 之間的數(shù)值呢?呵呵~利用 declare 宣告數(shù)值類型, 然後這樣做就可以了:
      [root@linux ~]# declare -i number=$RANDOM*10/32767 ; echo $number
      8   
    其他所有的變數(shù)說明: set
    而除了這些環(huán)境變數(shù)之外,還有沒有什麼重要的變數(shù)呢?當(dāng)然有! 我們在 bash 的環(huán)境下,其實還有一些挺重要的變數(shù),這些變數(shù)是『在這個 shell 環(huán)境下有效』的, 如果是在『子程序』,這些變數(shù)值就不會相同了。 那麼如何觀察目前 shell 環(huán)境下的所有變數(shù)呢?很簡單啊,就用 set 即可!set 這個指令除了會將環(huán)境變數(shù)列出來之外,其他我們的自訂變數(shù),與所有的變數(shù),都會被列出來喔!資訊多好多。 底下僅列出幾個重要的內(nèi)容。
    [root@linux ~]# set
    BASH=/bin/bash           
    BASH_VERSINFO=([0]="3" [1]="00" [2]="16" [3]="1" [4]="release"
    [5]="i386-redhat-linux-gnu")      
    BASH_VERSION='3.00.16(1)-release'
    COLORS=/etc/DIR_COLORS.xterm      
    COLUMNS=115              
    HISTFILE=/root/.bash_history      
    HISTFILESIZE=1000        
    HISTSIZE=1000            
    HOSTTYPE=i386            
    IFS=$' \t\n'            
    LINES=35                 
    MACHTYPE=i386-redhat-linux-gnu   
    MAILCHECK=60            
    OLDPWD=/home            
    OSTYPE=linux-gnu         
    PPID=20046               
    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\007"'
                            
    PS1='[\u@\h \W]\$ '      
    RANDOM=13586            
    SUPPORTED=zh_TW.UTF-8:zh_TW:zh:en_US.UTF-8
    name=VBird               
    $                        
    ?                        一般來說,不論是否為環(huán)境變數(shù),只要跟我們目前這個 shell 的操作介面有關(guān)的變數(shù), 通常都會被設(shè)定為大寫字元,也就是說,『基本上,在 Linux 預(yù)設(shè)的情況中,使用{大寫的字母}來設(shè)定的變數(shù)一般為系統(tǒng)內(nèi)定需要的變數(shù)』。

    • PS1:(提示字元的設(shè)定)
      這是 PS1 (數(shù)字的 1 不是英文字母!),這個東西就是我們的『命令提示字元』。 當(dāng)我們每次按下 [Enter] 按鍵去執(zhí)行某個指令後,最後要再次出現(xiàn)提示字元時, 就會主動去讀取這個變數(shù)值了。上頭 PS1 內(nèi)顯示的是一些特殊符號,每個版本 bash 的 PSI 變數(shù)內(nèi)的特殊符號可能有些許的差異, 你應(yīng)該主動的以 man bash 去查詢一下相關(guān)的變數(shù)。底下我列出 FC4 的環(huán)境下, 預(yù)設(shè)的 bash 的 PS1 變數(shù)內(nèi)的特殊符號代表意義:

      • \d :代表日期,格式為 Weekday Month Date,例如 "Mon Aug 1"
      • \H :完整的主機(jī)名稱。舉例來說,鳥哥的練習(xí)機(jī) linux.dmtsai.tw ,那麼這個主機(jī)名稱就是 linux.dmtsai.tw
      • \h :僅取主機(jī)名稱的第一個名字。以上述來講,就是 linux 而已, .dmtsai.tw 被省略。
      • \t :顯示時間,為 24 小時格式,如: HH:MM:SS
      • \T :顯示時間,12 小時的時間格式!
      • \A :顯示時間,24 小時格式, HH:MM
      • \u :目前使用者的帳號名稱;
      • \v :BASH 的版本資訊;
      • \w :完整的工作目錄名稱。家目錄會以 ~ 取代;
      • \W :利用 basename 取得工作目錄名稱,所以僅會列出最後一個目錄名。
      • \# :下達(dá)的第幾個指令。
      • \$ :提示字元,如果是 root 時,提示字元為 # ,否則就是 $ 囉~
        OK!所以,由預(yù)設(shè)的 PS1 內(nèi)容為: '\[\u@\h \W\]\$ ' 就可以瞭解為何我們的提示字元會是: [root@linux ~]# 了吧!好了,那麼假設(shè)我想要有類似底下的提示字元:

          [root@linux /home/dmtsai 16:50 #12]#
          ,那個 # 代表第 12 次下達(dá)的指令。 那麼應(yīng)該如何設(shè)定 PS1 呢?可以這樣。
          [root@linux home]# PS1='[\u@\h \w \A #\#]\$ '
          [root@linux /home 17:02 #85]#
          # 看到了嗎?提示字元變了!變的很有趣吧!其中,那個 #85 比較有趣,
          # 如果您按下 [Enter] 後,該數(shù)字就會增加喔!為啥?上面有說明ㄇㄟ!

    • $:(關(guān)於本 shell 的 PID)
      其實這個咚咚代表的是『目前這個 Shell 的執(zhí)行緒代號』,亦即是所謂的 PID (Process ID)。 更多的程序觀念,我們會在第四章的時候提及。想要知道我們的 shell 的 PID ,就可以: echo $$ 即可!
    • ?:(關(guān)於上個執(zhí)行指令的回傳碼)
      蝦密?問號也是一個特殊的變數(shù)?沒錯!在 bash 裡面這個變數(shù)可重要的很! 這個變數(shù)是:『上個執(zhí)行的指令所回傳的值』, 上面這句話的重點(diǎn)是『上一個指令』與『回傳值』兩個地方。當(dāng)我們執(zhí)行某些指令時, 這些指令都會回傳一個執(zhí)行後的代碼。一般來說,如果成功的執(zhí)行該指令, 則會回傳一個 0 值,如果執(zhí)行過程發(fā)生錯誤,就會回傳『錯誤代碼』才對!一般就是以非為 0 的數(shù)值來取代。 我們以底下的例子來看看:
      [root@linux ~]# echo $SHELL
      /bin/bash
      [root@linux ~]# echo $?
      0
      # 因為上個指令執(zhí)行過程中,並沒有錯誤,為成功的執(zhí)行完畢,所以回傳 0 。
      [root@linux ~]# 12name=VBird
      -bash: 12name=VBird: command not found
      [root@linux ~]# echo $?
      127
      # 發(fā)生錯誤啦!所以 echo $? 時,就會出現(xiàn)錯誤的代碼!
      # 我們可以利用這個代碼來搜尋錯誤的原因喔!
      [root@linux ~]# echo $?
      0
      # 咦!怎麼又變成正確了?這是因為 "?" 只與『上一個執(zhí)行指令』有關(guān),
      # 所以,我們上一個指令是執(zhí)行『 echo $? 』,當(dāng)然沒有錯誤,所以是 0 沒錯!
    • OSTYPE, HOSTTYPE, MACHTYPE:(主機(jī)硬體與核心的等級)
      這幾個東西與程式的安裝有關(guān)。我們在『Linux 主機(jī)規(guī)劃』 裡面提到過關(guān)於主機(jī)的等級方面的問題,當(dāng)我們在安裝軟體的時候, 需要透過編譯器來將原始碼編譯成為二進(jìn)位的檔案 (binary file)。但是, 我們可以針對硬體的配備來進(jìn)行編譯的最佳化,此時,這些參數(shù)就可以被用到了! 基本上,目前主要的 distribution 都是針對 i386 亦即最低等級的機(jī)器進(jìn)行最佳化, 這樣才能夠安裝在較高階的機(jī)器上,如果以 686 的機(jī)型來最佳化, 那麼,可就無法向下相容的喔!(早期的 OpenLinux 是針對 686 機(jī)器來釋出軟體, 所以,當(dāng)時的 OpenLinux 是無法安裝在 P-166 的機(jī)器上的。 )

    自訂變數(shù)轉(zhuǎn)成環(huán)境變數(shù): export
    好了,上面我們環(huán)境變數(shù)也提過了,一些自訂變數(shù)也提過了,那麼,這兩者有啥不同? 他的不同處,我們在 變數(shù)設(shè)定規(guī)則 當(dāng)中稍微提過, 主要是由於變數(shù)可否被子程序所引用。
    當(dāng)你取得一個 bash 之後,亦即得到了一個程序了,但是若你再次的執(zhí)行一次 bash ,那麼你將進(jìn)入『子程序』,這個程序的概念我們在資源管理章節(jié)中再詳談,這裡您先有個概念即可。 那麼由於您已經(jīng)進(jìn)入了該子程序,所以在父程序中的自訂變數(shù)設(shè)定將不再繼續(xù)的存在。 會存在子程序中的,僅有『環(huán)境變數(shù)』。
    換個角度來想,也就是說,如果我能將自訂變數(shù)變成環(huán)境變數(shù)的話,那不就可以讓該變數(shù)值繼續(xù)存在於子程序了? 呵呵!沒錯!此時,那個 export 指令就很有用啦! 如您想要讓該變數(shù)內(nèi)容繼續(xù)的在子程序中使用,那麼就請執(zhí)行:
      export 變數(shù)
    這個東西用在『引用他人的檔案或者其他程序』時,相當(dāng)?shù)闹匾模?尤其像鳥哥常常兩三個檔案互相引用來引用去的,如果忘記設(shè)定 export 的話,那麼不同的檔案中的相同變數(shù)值,將需要一再地重複設(shè)定才行!所以,我只要在頭一個檔案使用 export 的話,那麼後續(xù)的檔案引用時,將會把該變數(shù)內(nèi)容讀進(jìn)來!好用的很,如果僅下達(dá) export 而沒有接變數(shù)時,那麼此時將會把所有的『環(huán)境變數(shù)』秀出來喔!例如:
    [root@linux ~]# export
    declare -x ENV="/root/.bashrc"
    declare -x HISTSIZE="1000"
    declare -x HOME="/root"
    declare -x HOSTNAME="linux.dmtsai.tw"
    declare -x INPUTRC="/etc/inputrc"
    declare -x LANG="en_US.UTF-8"
    declare -x MAIL="/var/spool/mail/root"
    declare -x SHELL="/bin/bash"
    # 很多都直接省略了!不然....重複性太高,浪費(fèi)版面~ ^_^語系檔案的變數(shù) (locale)

    還記得我們在首次進(jìn)入 Linux 那個章節(jié)裡面提到的,關(guān)於語系編碼的問題嗎? 就是當(dāng)我們使用 man command 的方式去查詢某個資料的說明檔時,該說明檔的內(nèi)容可能會因為我們使用的語系, 而產(chǎn)生一些亂碼。另外,利用 ls 查詢檔案的時間時,也可能會有亂碼出現(xiàn)在時間的部分。 那個問題其實就是語系的問題啦。
    目前大多數(shù)的 Linux distributions 已經(jīng)都是支援萬國碼,此外,也都支援大部分的語言語系了。 這有賴於
    i18n
    支援的幫助呢! 那麼我們的 Linux 到底支援了多少的語系呢?這可以由 locale 這個指令來查詢到喔!
    [root@linux ~]# locale -a
    aa_DJ
    aa_DJ.iso88591
    en_US
    en_US.iso88591
    en_US.iso885915
    en_US.utf8
    zh_TW
    zh_TW.big5
    zh_TW.euctw
    zh_TW.utf8
    # 其實輸出的內(nèi)容有很多,鳥哥將一些資訊捨棄了~
    # 從上面的輸出中,我們也不難看出,系統(tǒng)是有支援 big5, utf8 等中文語系資料的!中文語系至少支援了兩種以上的編碼,一種是目前還是很常見的 big5 ,另一種則是越來越熱門的 utf-8 編碼。 那麼我們?nèi)绾涡抻嗊@些編碼呢?其實可以透過底下這些變數(shù)的說:
    [root@linux ~]# LANG         
    [root@linux ~]# LC_CTYPE     
    [root@linux ~]# LC_NUMERIC   
    [root@linux ~]# LC_TIME      
    [root@linux ~]# LC_COLLATE   
    [root@linux ~]# LC_MONETARY  
    [root@linux ~]# LC_MESSAGES  
    [root@linux ~]# LC_ALL       基本上,你可以逐一設(shè)定每個與語系有關(guān)的變數(shù)資料,但事實上,如果其他的語系變數(shù)都未設(shè)定, 且您有設(shè)定 LANG 或者是 LC_ALL 時,則其他的語系變數(shù)就會被這兩個變數(shù)所取代! 這也是為什麼我們在 FC4 當(dāng)中,通常僅設(shè)定 LANG 這個變數(shù)而已!因為他是最主要的設(shè)定變數(shù)。 好了,那麼你應(yīng)該要覺得奇怪的是,為什麼在 Linux 主機(jī)的終端機(jī)介面 (tty1 ~ tty6) 的環(huán)境下,如果 LANG=zh_TW.big5 這個設(shè)定值生效後,使用 man 或者其他訊息輸出時, 都會有一堆亂碼,尤其是使用 ls -l 這個參數(shù)時?
    因為在 Linux 主機(jī)的終端機(jī)介面下,那個環(huán)境是無法顯示像中文這麼複雜的編碼的文字, 所以,就會產(chǎn)生亂碼了。也就是如此,所以,我們才會必須要在 tty1 ~ tty6 的環(huán)境下, 加裝一些中文化介面的軟體,才能夠看到中文!不過,如果您是在 Windows 主機(jī)以遠(yuǎn)端連線伺服器的軟體連線到主機(jī)的話,那麼,嘿嘿!其實文字介面確實是可以看到中文的。 所以,此時反而您得要在 LANG 設(shè)定中文編碼才好呢!
    無論如何,如果發(fā)生一些亂碼的問題,那麼設(shè)定系統(tǒng)裡面保有的語系編碼, 例如: en_US 或 en_US.utf8 等等的設(shè)定,應(yīng)該就 OK 的啦!好了,那麼系統(tǒng)預(yù)設(shè)支援多少種語系呢? 當(dāng)我們使用 locale 時,系統(tǒng)是列出目前 Linux 主機(jī)內(nèi)保有的語系檔案, 這些語系檔案都放置在: /usr/lib/locale/ 這個目錄中。 但是,目前的這個 shell 環(huán)境所支援的語系,則是要看 SUPPORTED 這個變數(shù)才對喔!
    那麼,如果我想要修訂系統(tǒng)的語系支援呢?可以修訂 /etc/sysconfig/i18n 這個檔案呢! 這個檔案的內(nèi)容有點(diǎn)像這樣:
    [root@linux ~]# vi /etc/sysconfig/i18n
    LANG="en_US.UTF-8"
    SYSFONT="latarcyrheb-sun16"
    SUPPORTED="zh_TW.UTF-8:zh_TW:zh:en_US.UTF-8"你可以在這個檔案當(dāng)中加入 LC_TIME 或者其他語系相關(guān)變數(shù)的設(shè)定內(nèi)容, 也可以直接修改 LANG 那個變數(shù)即可。 ^_^ 但,事實上,我們還可以透過個人的環(huán)境設(shè)定檔來設(shè)定 LANG 呢! 如此一來,則不必修訂系統(tǒng)的語系檔案,比較安全啦!
    Tips:
    假設(shè)你用 vi 編輯一個純文字檔,這個純文字檔在編輯的時候,是在 Windows 上面編輯的, 那麼這個檔案的預(yù)設(shè)編碼應(yīng)該是以 zh_TW.big5 所編輯的才對。但是,如果你的 shell 環(huán)境中, 卻是使用 LANG=en_US 時,則當(dāng)你編輯該檔案時,就可能會看到『亂碼』, 或者輸入的中文可能會變成『亂碼』了。此時,只要你離開 vi ,然後執(zhí)行 LANG=zh_TW.big5 , 然後再重新以 vi 編輯該檔案,呵呵!應(yīng)該就能夠看到中文啦!但是請注意, 這個方法當(dāng)然不適用 tty1 ~ tty6 的環(huán)境,原因上面已經(jīng)提過囉~ 僅適合以類似 putty 軟體由 Windows 電腦連線到 linux 主機(jī)上的做業(yè)! 變數(shù)鍵盤讀取、陣列與宣告: read, array, declare

    我們上面提到的變數(shù)設(shè)定功能,都是直接由指令列直接設(shè)定的,那麼,可不可以讓使用者能夠經(jīng)由鍵盤輸入? 什麼意思呢?是否記得某些程式執(zhí)行的過程當(dāng)中,會等待使用者輸入 "yes/no" 之類的訊息啊? 在 bash 裡面也有相對應(yīng)的功能喔!此外,我們還可以宣告這個變數(shù)的屬性, 例如:陣列或者是數(shù)字等等的。底下就來看看吧!
  • read
    要讀取來自鍵盤輸入的變數(shù),就是用 read 這個指令了。這個指令最常被用在 shell script 的撰寫當(dāng)中, 以跟使用者進(jìn)行對談。關(guān)於 script 的寫法,我們會在後面章節(jié)介紹,底下先來瞧一瞧 read 的相關(guān)語法吧!
    [root@linux ~]# read [-pt] variable
    參數(shù):
    -p  :後面可以接提示字元!
    -t  :後面可以接等待的『秒數(shù)!』這個比較有趣~不會一直等待使用者啦!
    範(fàn)例:
    範(fàn)例一:讓使用者由鍵盤輸入一內(nèi)容,將該內(nèi)容變成 atest 變數(shù)
    [root@linux ~]# read atest
    This is a test
    [root@linux ~]# echo $atest
    This is a test
    範(fàn)例二:提示使用者 30 秒內(nèi)輸入自己的大名,將該輸入字串做成 named 變數(shù)
    [root@linux ~]# read -p "Please keyin your name: " -t 30 named
    Please keyin your name: VBird Tsai
    [root@linux ~]# echo $named
    VBird Tsairead 之後不加任何參數(shù),直接加上變數(shù)名稱,那麼底下就會主動出現(xiàn)一個空白行,等待您輸入。 如果加上 -t 後面接秒數(shù)之後,例如上面的範(fàn)例當(dāng)中,那麼 30 秒之內(nèi)沒有任何動作時, 該指令就會自動略過了~如果是加上 -p ,嘿嘿!後面就會有比較多可以用的提示字元給我們參考! 在指令的下達(dá)裡面,比較美觀啦! ^_^
  • declare / typeset
    declare 或 typeset 是一樣的功能,就是在宣告變數(shù)的屬性。如果使用 declare 後面並沒有接任何參數(shù), 那麼 bash 就會主動的將所有的變數(shù)名稱與內(nèi)容通通叫出來,就好像使用 set 一樣啦! 那麼 declare 還有什麼語法呢?看看先:
    [root@linux ~]# declare [-aixr] variable
    參數(shù):
    -a  :將後面的 variable 定義成為陣列 (array)
    -i  :將後面接的 variable 定義成為整數(shù)數(shù)字 (integer)
    -x  :用法與 export 一樣,就是將後面的 variable 變成環(huán)境變數(shù);
    -r  :將一個 variable 的變數(shù)設(shè)定成為 readonly ,該變數(shù)不可被更改內(nèi)容,也不能 unset
    範(fàn)例:
    範(fàn)例一:讓變數(shù) sum 進(jìn)行 100+300+50 的加總結(jié)果
    [root@linux ~]# sum=100+300+50
    [root@linux ~]# echo $sum
    100+300+50  
    [root@linux ~]# declare -i sum=100+300+50
    [root@linux ~]# echo $sum
    450         
    範(fàn)例二:將 sum 變成環(huán)境變數(shù)
    [root@linux ~]# declare -x sum
    範(fàn)例三:讓 sum 變成唯讀屬性,不可更動!
    [root@linux ~]# declare -r sum
    [root@linux ~]# sum=tesgting
    -bash: sum: readonly variable  declare 也是個很有用的功能~尤其是當(dāng)我們需要使用到底下的陣列功能時, 他也可以幫我們宣告陣列的屬性喔!不過,老話一句,陣列也是在 shell script 比較常用的啦!
  • 陣列屬性 array 說明
    某些時候,我們必須使用陣列來宣告一些變數(shù),這有什麼好處啊?在一般人的使用上, 果然是看不出來有什麼好處的!不過,如果您曾經(jīng)寫過程式的話,那才會比較瞭解陣列的意義~ 陣列對寫數(shù)值程式的設(shè)計師來說,可是不能錯過學(xué)習(xí)的重點(diǎn)之一哩!好!不囉唆~ 那麼要如何設(shè)定陣列的變數(shù)與內(nèi)容呢?在 bash 裡頭,陣列的設(shè)定方式是:
      var[index]=content

    意思是說,我有一個陣列名稱為 var ,而這個陣列的內(nèi)容為 var[1]=小明, var[2]=大明, var[3]=好明 .... 等等,那個 index 就是一些數(shù)字啦,重點(diǎn)是用中刮號 ([ ]) 來設(shè)定的。 目前我們 bash 提供的是一維陣列。老實說,如果您不必寫一些複雜的程式, 那麼這個陣列的地方,可以先略過,等到有需要再來學(xué)習(xí)即可!因為要製作出陣列, 通常與迴圈或者其他判斷式交互使用才有比較高的意義存在!
    範(fàn)例:設(shè)定上面提到的 var[1] ~ var[3] 的變數(shù)。
    [root@linux ~]# var[1]="small min"
    [root@linux ~]# var[2]="big min"
    [root@linux ~]# var[3]="nice min"
    [root@linux ~]# echo "${var[1]}, ${var[2]}, ${var[3]}"比較有趣的地方在於『讀取』,一般來說,建議直接以 ${陣列} 的方式來讀取, 比較正確無誤的啦!
    文章轉(zhuǎn)載來源:
    http://hi.baidu.com/harriets/blog/item/5407c4036539ea084afb51f1.html
    本文用于學(xué)習(xí),若侵權(quán)請告之,本人將刪除


    本文來自ChinaUnix博客,如果查看原文請點(diǎn):http://blog.chinaunix.net/u3/104787/showart_2080455.html




    歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2