溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux下shell位置參數(shù)怎么用

發(fā)布時間:2022-01-26 17:25:04 來源:億速云 閱讀:522 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)Linux下shell位置參數(shù)怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

一、引言

  之前我們一直沒有涉及程序接收和處理命令行選項以及參數(shù)的能力。本章節(jié)將講述允許程序訪問命令行內(nèi)容的shell功能。

二、訪問命令行

  shell提供了一組名為位置參數(shù)的變量,用于儲存命令行中的關(guān)鍵字,這些變量分別命令為0~9??梢酝ㄟ^以下方法展示這些變量。

  1 #!/bin/bash
  2
  3 # posit-param: script to view command line parameters
  4
  5 echo "
  6 \$0 = $0
  7 \$1 = $1
  8 \$2 = $2
  9 \$3 = $3
 10 \$4 = $4
 11 \$5 = $5
 12 \$6 = $6
 13 \$7 = $7
 14 \$8 = $8
 15 \$9 = $9
 16 "

  這個簡單的腳本展示了從變量9的值。在沒有任何命令行參數(shù)的情形下執(zhí)行此腳本結(jié)果如下所示:

Linux下shell位置參數(shù)怎么用

  即便沒有提供任何實參,變量$0總是會儲存有命令行顯示的第一項數(shù)據(jù),也就是所執(zhí)行程序所在的路徑名。現(xiàn)在讓我們看看,看一下提供實參情形下的程序執(zhí)行結(jié)果。

Linux下shell位置參數(shù)怎么用

  注意,使用參數(shù)擴展技術(shù),用戶實際可以獲取多于9個的參數(shù)。為標(biāo)明一個大于9的數(shù)字,將數(shù)字用大括號括起來,例如{11}, ${888}等。

三、確定實參的數(shù)目

  shell還提供了變量$#以給出命令行參數(shù)的數(shù)目。如下代碼所示:

 #!/bin/bash
 
 # posit-param: script to view command line parameters
 
 echo "Number of arguments: $#"
 
 echo "
 \$0 = $0
 \$1 = $1
 \$2 = $2
 \$3 = $3
 \$4 = $4
 \$5 = $5
 \$6 = $6
 \$7 = $7
 \$8 = $8
 \$9 = $9
 "

  以上程序運行結(jié)果如下所示:

Linux下shell位置參數(shù)怎么用

四、shift——處理大量的實參

  但是如果給程序提供大量的實參會發(fā)生什么呢?如下所示:

Linux下shell位置參數(shù)怎么用

  在本例中,通配符“*”擴展為26個實參。怎么樣才可以處理這么多參數(shù)呢?shell提供了一種略顯笨拙的處理方法。每次執(zhí)行shift命令后,所有參數(shù)的值均“下移一位”。實際上,通過shift命令我們就可以只處理一個參數(shù)(之外的一個參數(shù),0值恒定)而完成全部程序任務(wù)。如下程序:

 #!/bin/bash
 
 # shift.sh: script to display all arguments
 
 count=1
 
 while [[ $# > 0 ]]; do
        echo "Argument $count = $1"
        count=$((count + 1))
        shift
 done

  每當(dāng)執(zhí)行一次shift命令時,變量的值就賦值給1,而的值則賦給變量2,依次類推。變量$#的值同時減去1。故以上代碼的執(zhí)行結(jié)果如下圖所示:

Linux下shell位置參數(shù)怎么用

五、在shell函數(shù)中使用位置參數(shù)

  就像位置參數(shù)可用于向shell腳本傳遞參數(shù)一樣,位置參數(shù)也可用于shell函數(shù)實參的傳遞,如以下腳本所示:

  1 file_info() {
  2     if [[ -e "$1" ]]; then
  3         echo "File Type:"
  4         file "$1"
  5         echo "File Status:"
  6         stat "$1"
  7     else
  8         echo "$FUNCNAME: usage: $FUNCNAME file" >&2
  9         return 1
 10     fi  
 11 }

  現(xiàn)在,如果一個包含了file_info函數(shù)的腳本以一個文件名為實參調(diào)用file_info,則此實參就被傳遞給file_info函數(shù)。

  在這樣的條件下,我們就可以寫出很多不僅普通腳本可使用,而且.bashrc文件也同樣適用的有用的shell函數(shù)。

  此外,這里需要注意的是FUNCNAME的shell變量,shell自動更新FUNCNAME以追蹤當(dāng)前執(zhí)行的shell函數(shù)。

關(guān)于“Linux下shell位置參數(shù)怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI