[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 編程技術 > Shell > 正文
Linux程式設計-11.Shell Script(bash)--(11)參數與變數
http://www.openchess.org/noitatsko/programming/ (2001-05-25 18:08:00)
在繼續下去介紹function之前,我們必須停下來介紹"參數與變數"。 

--------------------------------------------------------------------------------

參數(Parameters)是用來儲存"值"的資料型態,有點像是一般語言中的變數。它可以是個名稱(name)、數字(number)、或者是以下所列出來一些特殊符號(Special Parameters)。 
在shell中,變數是由name形式的參數所構成的。 



--------------------------------------------------------------------------------

在前面的許多例中,我們事實上已經看到許多參數的運用。要設定一個Parameter實際很簡單: 
name=value 

例如說: 

MYHOST="foxman" 

而要使用它時,則是加個"$"符號。 

echo $MYHOST 



--------------------------------------------------------------------------------

位置參數(Positional Parameters) 

--------------------------------------------------------------------------------

所謂的位置參數便是0,1,2,3,4,5,6,7,8,9...。使用時,用$0,$1,$2...。 
位置參數是當script被載入時,後面所附加的參數。$0是本身,$1則為第一個參數,$2為第二個,依此類推。而當Positional Parameters被function所使用時,它們會被暫時取代(下一節會介紹function)。 

例如以下這個script: 
#!/bin/sh 
# Filename : position 
echo $0 
echo $1 

執行時: 
[foxman@foxman bash]# ./position abc 
./position 
abc 

當位置參數超過兩位數時,有特別的方法來展開,稱為Expansion。 



--------------------------------------------------------------------------------

特殊參數(Speical Parameters) 
這些符號,非常不人性,對新手來說很困擾。但上手後,會覺得方便無比,有些如果您看不懂的話,就--算了,不用浪費太多時間在上面。 



--------------------------------------------------------------------------------

* 星號 
將Positional Parameters合成一個參數,其間隔為IFS內定參數的第一個字元(見內建變數一節)。 
例: 
#!/bin/sh 
# starsig 
echo $* 

執行: 
[foxman@foxman bash]# starsig a b c d e f g 
a b c d e f g 



--------------------------------------------------------------------------------

@ at符號 
與*星號類同。不同之處在於不參照IFS。 

例: 
#!/bin/sh 
# atsig 
echo $@ 

執行: 
[foxman@foxman bash]# atsig a b c d e f g 
a b c d e f g 



--------------------------------------------------------------------------------

# 井字號 
展開Positional parameters的數量。 

例: 
#!/bin/sh 
# poundsig 
echo $# 

執行 
[foxman@foxman bash]# poundsig a b c d e f g 




--------------------------------------------------------------------------------

? 問號 
最近執行的foreground pipeline的狀態。 



--------------------------------------------------------------------------------

- 減號 
最近執行的foreground pipeline的選項參數。 



--------------------------------------------------------------------------------

$ 錢錢錢 
本身的Process ID。 

[foxman@foxman bash]# ps ax | grep bash 
1635  p1 S    0:00 /bin/bash 

[foxman@foxman bash]# echo $$ 
1635 



--------------------------------------------------------------------------------

! 驚號 
最近執行背景命令的Process ID。 



--------------------------------------------------------------------------------

0 零 
在Positional Parameters一部份已經說明過了,是執行的shell script本身。但如果是用"bash -c",則$0被設為第一個參數。 

[foxman@foxman bash]# echo $0 
/bin/bash 



--------------------------------------------------------------------------------

_ 底線符號 
顯示出最後一個執行的命令。 

[foxman@foxman bash]# echo $_ 
bash 



--------------------------------------------------------------------------------

內建變數(Shell Variables) 
Bash有許多內建變數,像PATH、HOME、ENV......等等。這些內建變數將在另一節中,專門一一說明。 
(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
Linux程式設計-31.工作群資訊管理(grp) (2001-05-27 22:08:00)
Linux程式設計-30.使用者資訊管理(pwd) (2001-05-27 21:04:00)
Linux程式設計-29.時間處理 (2001-05-27 20:10:01)
Linux程式設計-28.GNU Make (2001-05-27 19:00:00)
Linux程式設計-27.GNU Debugger (2001-05-27 18:08:01)
Linux程式設計-26.PIPE (2001-05-27 17:04:00)
Linux程式設計-25.Message Queues (2001-05-27 16:10:00)
Linux程式設計-24.Semaphores (2001-05-27 15:00:00)
Linux程式設計-23.共享記憶體(Shared Memory) (2001-05-27 14:08:00)
Linux程式設計-20.getopt (2001-05-27 13:04:00)

===更多相關===
 

★  樊強制作 歡迎分享  ★