歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

Shell腳本通過參數傳遞調用指定函數

我們在寫一些功能性Shell腳本的時候,往往會把操作相似或者參數類似行為接近的函數放在同一個shell腳本中,這樣管理方便,維護簡單,也很清晰。對於這種情況,通常的辦法是,在shell腳本中定義所有用到的函數,然後在正文代碼中用case語句讀入輸入的命令函數參數來調用指定的相應函數。這樣就達到一個shell腳本使用的強大功能。

Shell編程淺析 http://www.linuxidc.com/Linux/2014-08/105379.htm 

Linux Shell參數替換 http://www.linuxidc.com/Linux/2013-06/85356.htm

Shell for參數 http://www.linuxidc.com/Linux/2013-07/87335.htm

Linux/Unix Shell 參數傳遞到SQL腳本 http://www.linuxidc.com/Linux/2013-03/80568.htm

Shell腳本中參數傳遞方法介紹 http://www.linuxidc.com/Linux/2012-08/69155.htm

Shell腳本傳遞命令行參數 http://www.linuxidc.com/Linux/2012-01/52192.htm

Linux Shell 通配符、轉義字符、元字符、特殊字符 http://www.linuxidc.com/Linux/2014-10/108111.htm

下面以一個簡單的例子來說明。一個計算器提供了加減乘除的功能:

 #!/bin/bash
usage="Usage: `basename $0` (add|sub|mul|div|all) parameter1 parameter2"
command=$1
first=$2
second=$3
function add() {
        ans=$(($first + $second))
        echo $ans
}
function sub() {
        ans=$(($first - $second))
        echo $ans
}
function mul() {
        ans=$(($first * $second))
        echo $ans
}
function div() {
        ans=$(($first / $second))
        echo $ans
}
case $command in
  (add)
    add
    ;;
  (sub)
    sub
    ;;
  (mul)
    mul
    ;;
  (div)
    div
    ;;
  (all)
    add
    sub
    mul
    div
    ;;
  (*)
    echo "Error command"
    echo "$usage"
    ;;
esac

上面的這段shell腳本,我們就可以通過傳入不同的參數調用達到不同的目的。

[hdfs@cdhonf]$ ./calculator add 2 3
5
[hdfs@cdhonf]$ ./calculator sub 2 3
-1
[hdfs@cdhonf]$ ./calculator mul 2 3
6
[hdfs@cdhonf]$ ./calculator div 2 3
0
[hdfs@cdhonf]$ ./calculator all 2 3
5
-1
6
0
[hdfs@cdhonf]$ ./calculator a 2 3
Error command
Usage: calculator (add|sub|mul|div|all) parameter1 parameter2

倘若我們不想每個函數都用同樣個數的參數,也就是不同的函數參數不一樣時候怎麼辦?這時候我們可以在函數體的內部讀入參數,然後在case後的相應調用語句時候也傳入相應的參數。

function double() {
        ans=$(($1 + $1))
        echo $ans
}
case $command in
  (dou)
    double "$first"  #you can also use "$2"
    ;;

Copyright © Linux教程網 All Rights Reserved