在 shell中, 我們可用 $0, $1, $2, $3 ... 這樣的变量分別提取命令行中变量

代码: script_name parameter1 parameter2 parameter3 ...
我們很容易就能猜出 $0 就是代表 shell script 名称(路径)本身,而 $1 就是其后的第一个参数, 依次类推....

須得留意的是 IFS 的作用,也就是, 若 IFS 被 quoting 處理後, 那麼 positional parameter 也會改變。
如下例:
代码: my.sh p1 "p2 p3" p4
fucntion 時, 我不是說過它是 script 中的 script

一例外的是 $0 而已。
舉例 而 言 : 假設 my.sh 裡有一個 fucntion 叫 my_fun , 若 在 script 中 跑 my_fun fp1 fp2 fp3 ,
那麼, function 內的 $0 是 my.sh , 而 $1 則是 fp1 而非 p1 了 ...
不如寫個簡單的 my.sh script 看看吧:
代码: #!/bin/bash

my_fun() {

echo '$0 inside function is '$0

echo '$1 inside function is '$1

echo '$2 inside function is '$2

}

echo '$0 outside function is '$0

echo '$1 outside function is '$1
echo '$2 outside function is '$2

my_fun fp1 "fp2 fp3"

然後在 command line 中跑一下 script 就知道了:
代码: chmod +x my.sh ./my.sh p1 "p2 p3"

$0 outside function is ./my.sh

$1 outside function is p1

$2 outside function is p2 p3

$0 inside function is ./my.sh

$1 inside function is fp1

$2 inside function is fp2 fp3


我們常在 shell script 裡用如下方法測試 script 是否有读进参数:
代码:
if [ $# = 0 ] //看到没有,所有的[]中的内容都必须和括号有空格
假如為 0 , 那就表示 script 沒有參數, 否則就是有帶參數...

posted @ 2015-07-07 16:38  haoxing990  阅读(753)  评论(0编辑  收藏  举报