iT邦幫忙

DAY 15
5

快快樂樂學會讓電腦幫我做事系列 第 12

[Shell Script] Day15-除了互動以外的輸入方式

在之前的介紹中,如果要輸入資料到寫的的 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
下一篇 換行的問題


上一篇
[Shell Script] Day14-可以提高if-then-else的 switch case
下一篇
[Shell Script] Day16-換行的問題
系列文
快快樂樂學會讓電腦幫我做事27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
鐵殼心
iT邦高手 1 級 ‧ 2013-10-06 08:55:04

沙發
拍手

pajace2001 iT邦研究生 1 級 ‧ 2013-10-06 08:55:57 檢舉

謝謝

我要留言

立即登入留言