Shell 設計入門: | ||
---|---|---|
<<< Previous | Next >>> |
Bash shell 提供位置參數來擔任參數的傳遞工作。
例:./pa.sh A B C D E F G H I
其中 A B C D E F G H I 為欲傳入 pa.sh 這支 script 的 9 個參數,此時,用 $0 來代表 script 本身的檔案名稱,$1 代表第一個參數,也就是 A,$2 代表第一個參數,也就是 B,其它依此類推。
$# 代表參數的總數,也就是 9。
$* 代表所有的參數,也就是 A B C D E F G H I
$@ 代表所有的參數,也就是 A B C D E F G H I
$* 和 $@ 稍有不同:"$*" 代表 "A B C D E F G H I","$@" 代表 "A" "B" "C" "D" "E" "F" "G" "H" "I"
shift 用來移動參數的位置,每執行一次,則所有的參數往左移一位,此時 $1 為 B,$2 為 C,......
set 用來重新設定位置參數,比如:set a b c d,表示重新設定 $1 為 a, $2 為 b, $3 為 c, $4 為 d
pa.sh
#! /bin/sh echo "\$1 = $1" echo "\$2 = $2" echo "\$3 = $3" echo "\$4 = $4" echo "\$5 = $5" echo "\$6 = $6" echo "\$7 = $7" echo "\$8 = $8" echo "\$9 = $9" |
要特別注意的是:位置參數只有 $1 ~ $9 等九個,沒有 $10。$10是代表 $1 和 0 的組合,也就是說:若 $1 為 A,則 $10 為 A0 之意,例如以下 script 所示:
pa2.sh
#! /bin/sh echo "\$10 = $10" ./pa2.sh A 結果: $10 = A0 |
第五章曾提過自動安裝 script,現在我們再加以改良:
#! /bin/sh # 使用法: ./install-app.sh Apache版本 PHP版本 MySQL安裝路徑 if [ $# -ne 0 -a $# -ne 3 ]; then echo "使用法: ./install-app.sh Apache版本 PHP版本 MySQL安裝路徑" echo "或" echo "./install-app.sh" exit fi # 設定版本編號及 MySQL 安裝路徑 if [ -n $1 ]; then ApacheVersion="$1" else ApacheVersion="1.3.26" fi if [ -n $2 ]; then PHPVersion="$2" else PHPVersion="4.1.2" fi if [ -n $3 ]; then MYSQLHOME="$3" else MYSQLHOME="/home/mysql" fi # 解壓 tar xvzf apache_$ApacheVersion.tar.gz && tar xvzf php-$PHPVersion.tar.gz && # 設定 Apache echo "Configure apache ...." && cd apache_$ApacheVersion && ./configure --prefix=/usr/local/apache && # 設定/編譯/安裝 PHP cd .. && cd php-$PHPVersion && ./configure \ --with-apache=../apache_$ApacheVersion \ --with-mysql=$MYSQLHOME && make && make install && cd .. && # 設定/編譯/安裝 Apache cd apache_$ApacheVersion && ./configure \ --prefix=/usr/local/apache \ --activate-module=src/modules/php4/libphp4.a && make && make install && # 拷貝 php.ini 到 /usr/local/lib cd ../php-$PHPVersion && cp -f php.ini-dist /usr/local/lib/php.ini echo echo "Done!" echo |
<<< Previous | Home | Next >>> |
10.算術運算 | 12.程式條件控制 if 語法結構 |