[[email protected] ~]# ls anaconda-ks.cfg install.log install.log.syslog
如果執行這樣一條命令,則 $0 的值就是 ls 命令本身,$1 的值就是 anaconda-ks.cfg 這個檔案,$2 是 install.log 檔案,$3 是 install.log.syslog 檔案。位置引數變數 | 作 用 |
---|---|
$n | n 為數位,$0 代表命令本身,$1?$9 代表第 1?9 個引數,10 以上的引數需要用大括號包含, 如${10} |
$* | 這個變數代表命令列中所有的引數,把所有的引數看成一個整體 |
[email protected] | 這個變數也代表命令列中所有的引數,不過 [email protected] 把每個引數區別對待 |
$# | 這個變數代表命令列中所有引數的個數 |
[[email protected] ~]# cd sh/
[[email protected] sh]# vi count.sh
#!/bin/bash
num1=$1
#給num1變數賦值是第一個引數
num2=$2
#給num2變數賦值是第二個引數
sum=$(($num1 + $num2))
#變數sum的和是num1加num2
echo $sum
#列印變數sum的值
[[email protected] sh]# chmod 755 count.sh
#給指令碼檔案賦予執行許可權
[[email protected] sh]#./count.sh 11 22
33
#這個指令碼就會把第一個引數和第二個引數相加
[[email protected] sh]# vi parameter.sh
#!/bin/bash
echo "A total of $# parameters"
#使用$#代表所有引數的個數
echo 'The parameters is: $*"
#使用$*代表所有的引數
echo 'The parameters is: [email protected]"
#使用[email protected]也代表所有的引數
[[email protected] sh]# chmod 755 parameter.sh
[[email protected] sh]#./parameter.sh 11 22 33
A total of 3 parameters
#因為輸入了三個引數,所以$#顯示的值是3
The parameters is: 11 22 33
#輸出了所有引數
The parameters is: 11 22 33
#也輸出了所有引數
[rootdlocalhost sh]# vi parameter2.sh
#!/bin/bash
for i in "$*"
#定義for迴圈,in後面有幾個值,for就會迴圈多少次,注意"$*"要用雙引號括起來
#每次回圈都會把in後面的值賦予變數i
#Shell把“$*”中的所有引數看成一個整體,所以這個for迴圈只會迴圈一次
do
echo "The parameters is: $i"
#列印變數$i的值
done
x=0
#定義變數x的值為0
for y in "[email protected]"
#同樣,in後面有幾個值,for就會迴圈幾次,每次都把值賦予變數y
#因為Shell會把“[email protected]”中的每個引數都看成獨立的,所以“[email protected]”中有幾個引數,就會迴圈幾次
do
echo "The parameter$x is: $y"
#輸出變數y的值
x=$(( $x +1 ))
#讓變數x每次回圈都加1 ,是為了輸出時看得更清楚
done
echo "x is: $x"
[[email protected] sh]# chmod 755 parameter2.sh
[[email protected] sh]#./parameter2.sh 11 22 33
The parameters is: 11 22 33
#這是第一個for的結果,"$*"被看作一個整體,所以只會迴圈一次
The parameter1 is: 11
The parameter2 is: 22
The parameter3 is: 33
#這是第二個for的結果,“[email protected]”中的每個變數被區別對待,所以會迴圈三次
x is:3
#x的值是 3,證明迴圈了三次