程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> Shell腳本傳參數方法總結

Shell腳本傳參數方法總結

編輯:更多關於編程

       這篇文章主要介紹了Shell腳本傳參數方法總結,本文著重講解傳遞固定個數參數的方法、可變個數參數的方法兩部份內容,需要的朋友可以參考下

      一、接收固定長度的參數

       代碼如下:

      [root@svn shell_example]# cat params.sh

      #!/bin/bash

      #傳參測試腳本

      echo "My name is `basename $0` -I was called as $0"

      echo "My first parameter is : $1"

      echo "My second parameter is : $2"

      空參數執行

      代碼如下:

      [root@svn shell_example]# sh params.sh

      My name is params.sh -I was called as params.sh

      My first parameter is :

      My second parameter is :

      傳遞2個參數執行

       代碼如下:

      [root@svn shell_example]# sh params.sh one two

      My name is params.sh -I was called as params.sh

      My first parameter is : one

      My second parameter is : two

      二、那如果還有參數怎麼辦呢?還要一個個加上來嗎?答案是否定的

      以下用法應該不陌生,就是直接執行腳本本身,沒有附帶任何參數,那麼腳本講拋出幫助信息.即怎麼使用此腳本.見紅字部分

       代碼如下:

      [root@svn shell_example]# sh params_v2.sh

      My name is params_v2.sh -I was called as params_v2.sh

      I was called with 0 parameters.

      Usage: params_v2.sh first second

      You provided 0 parameters,but 2 are required.

      代碼如下

       代碼如下:

      [root@svn shell_example]# cat params_v2.sh

      #!/bin/bash

      # 這是個測試腳本傳參的測試例子

      echo "My name is `basename $0` -I was called as $0"

      echo "I was called with $# parameters."

      if [ "$#" -eq "2" ];then

      echo "My first parameter is $1"

      echo "My second parameter is $2"

      else

      echo "Usage: `basename $0` first second"

      echo "You provided $# parameters,but 2 are required."

      fi

      詳細的執行過程如下

      不傳參數執行

       代碼如下:

      [root@svn shell_example]# sh params_v2.sh

      My name is params_v2.sh -I was called as params_v2.sh

      I was called with 0 parameters.

      Usage: params_v2.sh first second

      You provided 0 parameters,but 2 are required.

      傳遞3個參數執行

       代碼如下:

      [root@svn shell_example]# sh params_v2.sh one two three

      My name is params_v2.sh -I was called as params_v2.sh

      I was called with 3 parameters.

      Usage: params_v2.sh first second

      You provided 3 parameters,but 2 are required.

      傳遞2個參數執行

       代碼如下:

      [root@svn shell_example]# sh params_v2.sh one two

      My name is params_v2.sh -I was called as params_v2.sh

      I was called with 2 parameters.

      My first parameter is one

      My second parameter is two

      問題來了,要是後期還要加參數怎麼辦呢?或者我也不確定到底會傳幾個參數.

      解決方法如下,詳細執行結果如下

       代碼如下:

      [root@svn shell_example]# cat manyparams.sh

      #!/bin/bash

      #這是個測試腳本傳N個參數的例子

      echo "我的名字是 `basename $0` - 我是調用自 $0"

      echo "我有 $# 參數"

      count=1

      while [ "$#" -ge "1" ];do

      echo "參數序號為 $count 是 $1"

      let count=count+1

      shift

      done

      一個參數執行

      [root@svn shell_example]# sh manyparams.sh one

      我的名字是 manyparams.sh - 我是調用自 manyparams.sh

      我有 1 參數

      參數序號為 1 是 one

      5個參數執行

       代碼如下:

      [root@svn shell_example]# sh manyparams.sh one two three four five

      我的名字是 manyparams.sh - 我是調用自 manyparams.sh

      我有 5 參數

      參數序號為 1 是 one

      參數序號為 2 是 two

      參數序號為 3 是 three

      參數序號為 4 是 four

      參數序號為 5 是 five

            注< >:更多精彩教程請關注三聯編程

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved