1. 程式人生 > >shell基礎-bash變數-位置引數變數

shell基礎-bash變數-位置引數變數

位置引數變數其實屬於預定義變數的一種。

位置引數變數主要有以下這些:

位置引數變數 說明
$n n為自然數。01到9191開始依次輸入的),十以上的引數要用大括號包含,如${10}。
$* 這個變數代表命令列中所有的引數(不包括$0),它把所有的引數當做一個整體對待。對其進行for迴圈遍歷時,只會迴圈一次。
$@ 這個變數也代表命令列中所有的引數(不包括$0),它把所有的引數當做獨立的個體對待。對其進行for迴圈遍歷時,可迴圈多次。
$# 這個變數代表命令列中所有引數的個數(不包括$0)。

位置引數變數的名稱和作用都是固定的,但我們可以給其傳入不同的值。

位置引數變數的作用是接收使用者執行命令時傳入的引數以及命令本身。

位置引數變數主要用在shell指令碼檔案中,那麼它的作用就是把命令和命令的引數傳遞到當前執行的指令碼中。

下面通過編寫一個shell指令碼檔案canshu.sh,並執行它來說明。

vi canshu.sh

canshu.sh的內容如下:

#!/bin/bash
echo $0
echo "\$1 is $1"
echo "\$2 is $2"

for x in "$*"
    do
        echo $x
    done

for
y in "[email protected]" do echo $y done echo $#

給該shell指令碼賦予執行許可權。

chmod 755 canshu.sh     
賦予執行許可權。

執行該指令碼,並傳遞兩個引數。

[root@localhost 12:41 ~/sh]# ./canshu.sh a b
./canshu.sh
$1 is a
$2 is b
a b
a
b
2

總結: 使用位置引數變數來接收使用者輸入的引數,有一個弊端是,除非指令碼是你自己寫的,否則執行指令碼時,你根本不知道要傳入幾個什麼樣的引數。好處是在執行指令碼的同時傳入引數。