shell 中常見的位置參數如下
$# : 用來統計參數的個數
$@ :會将指令行的所有的參數當做同一個字元串中的多個獨立單詞
$* :會将指令行的參數當做一個參數來儲存
舉例說明
參數 $#
1
2
3
4
5
6
<code>cat</code> <code>test8.sh </code>
<code>#!/bin/bash</code>
<code>## getting the unmber of parameters </code>
<code>#</code>
<code>echo</code> <code>there are $</code><code># parameters supplied</code>
./test8.sh 1 2 3
there are 3 parameters supplied
參數的簡單運算,當輸入正确的參數時進行運算、錯誤的時候輸入腳本用法
7
8
9
10
11
12
<code>## testing parameters</code>
<code>if</code> <code>[ $</code><code># -ne 2 ]</code>
<code>then</code>
<code> </code><code>echo</code> <code>Usage: test9.sh a b</code>
<code>else</code>
<code>total=$[ $1 + $2 ]</code>
<code>echo</code> <code>The total is $total</code>
<code>#echo </code>
<code>fi</code>
./test9.sh 8 56
The total is 64
./test9.sh 81
Usage: test9.sh a b
參數$@ 和$#
<code>#testing $* and $@</code>
<code>echo</code>
<code>#echo "Using the $* method: $*"</code>
<code>echo</code> <code>"Using the \$* method: $*"</code>
<code>echo</code>
<code>echo</code> <code>"Using the \$@ method: $@"</code>
./test11.sh aa bb cc
Using the $* method: aa bb cc
Using the $@ method: aa bb cc
上述例子表面上$@ 和$# 的用法是一樣的,下面的例子将會加以區分
13
14
15
16
17
18
19
20
<code># testing $* and $@</code>
<code>count=1</code>
<code>for</code> <code>param </code><code>in</code> <code>"$*"</code>
<code>do</code>
<code> </code><code>echo</code> <code>"\$* parameter #$count = $param"</code>
<code> </code><code>count=$[ $count + 1 ]</code>
<code>done</code>
<code>echo</code> <code>"-------------------------------------"</code>
<code>for</code> <code>param </code><code>in</code> <code>"$@"</code>
<code> </code><code>echo</code> <code>"\$@ parameter #$count = $param"</code>
./test12.sh aa bb cc dd
$* parameter #1 = aa bb cc dd
-------------------------------------
$@ parameter #2 = aa
$@ parameter #3 = bb
$@ parameter #4 = cc
$@ parameter #5 = dd
本文轉自 水滴石川1 51CTO部落格,原文連結:http://blog.51cto.com/sdsca/1903992,如需轉載請自行聯系原作者