在之前的介紹中,如果要輸入資料到寫的的 shell script 中做運算處理後再輸出
成我們要的資料,我們是採用與 shell script 互動 的方式來輸入。
可是如果我們想把這支 shell script 當成另一支工具讓另一支 shell script 來使用的話,這種互動的方式雖然也是可以達到我們的目的,但是就會變得很不好使用。
所以今天要介紹的就是,以參數的方式輸入資料處理運算後再輸出。
首先先介紹一下他的關鍵字:
$<數字> : 代表著第<數字>個參數
例如:$1 代表第一個參數, $2 代表著第二個參數,所以 $0 就是代表該
shell script 的名字字串
$@:代表輸入參數清單
$#:代表參數的總數
來看的測試程式吧,這個測試程式會列印出程式名稱以及入的參數有哪些:
#!/bin/bash
echo "Shell Script 名稱:$0"
echo "參數個數有 $# 個"
echo "輸入的參數是: $@"
echo "================="
i=1
echo " 用 for 迴圈列印參數: "
for VAR in $@
do
echo "第$i個:$VAR"
(( i++ ))
done
顯示結果:
pajace_chen@PajaceChenU12:~/ironman$ ./example15_1.sh A B C D E
Shell Script 名稱:./example15_1.sh
參數個數有 5 個
輸入的參數是: A B C D E
=================
用 for 迴圈列印參數:
第1個:A
第2個:B
第3個:C
第4個:D
第5個:E
小技巧:
一般我們在寫可以輸入參數的 shell script 時我都會很習慣的判斷輸入的參數個
數是不是我要的。例如我想寫一支可以幫我算乘法的程式,我就會一開始寫個
判斷式來判斷輸入的參數是否為兩個。
範例如下:
#!/bin/bash
if [ $# -ne 2 ]; then
echo "使用方式:$0 <數字一> <數字二>"
exit 0
fi
ANSWER=$(( $1 * $2 ))
echo " $1 X $2 = $ANSWER "
所以執行 script 如果沒輸入參數的話就會顯示提示訊息:
pajace_chen@PajaceChenU12:~/ironman$ ./example15_2.sh
使用方式:./example15_2.sh <數字一> <數字二>
如果有帶入參數的話,就會幫我們做運算:
pajace_chen@PajaceChenU12:~/ironman$ ./example15_2.sh 9527 3388
9527 X 3388 = 32277476
pajace_chen@PajaceChenU12:~/ironman$
鐵人賽文章分享
上一篇 可以提高if-then-else的Bash case
下一篇 換行的問題