2012-04-02 62 views
11

我在尋找最後的位置參數。我知道要查找的參數數量是$#這在邏輯上是最後一個,但我需要找到並使用最後一個位置參數中的內容。如何在Linux中找到最後的位置參數

這就好像是$#= 5,我想要做5美元。

我試圖做一些類似$$#或$ {$#}的猜測,但無法得到它。

我需要使用它的實例位於if語句中,或者將其聲明爲另一個變量或echo。

我希望很清楚。提前致謝。

+0

這是爲了一個shell函數還是你想要獲得上一個命令行的最後一個參數? – sarnold 2012-04-02 02:26:15

+0

你可以這樣做:eval echo \ $$# – wisent 2012-04-02 05:48:09

回答

17

您需要${!#},它將參數計數與間接相結合。

+1

和'eval last = \ $$#'用於通過'!'缺少間接尋址的shell。 – Idelic 2012-04-02 17:53:09

+0

這似乎是我正在尋找。謝謝。 – leeman24 2012-04-03 00:04:37

+0

我猜你不能指定t $ {!#}作爲變量,如果這就是你的意思。但eval last = \ $$#爲我工作。我認爲那就是你缺乏間接性意味着什麼 – leeman24 2012-04-03 00:15:26

3

這裏是另一種方式:

while [[ "$1" != "" ]];do 
    last_parm=$1 
    shift 
done 
echo $last_parm 

給測試:

$ ./test.sh 1 2 3 4 5 
5 
2

這似乎是一個更直接的方法:

${@: -1} 

一些進一步的信息here。我不確定Bash之外的可移植性。

相關問題