2012-04-02 16 views
11

私は最後の位置パラメータを探しています。私は、パラメータの数が論理的には最後の$#であることを知っていますが、最後の位置パラメータにあるものを見つけて使用する必要があります。最後の位置パラメータを見つける方法はありますか?

$#= 5の場合、$ 5をしたいと思うでしょう。

私は$$#や$ {$#}のようなことを推測として実行しようとしましたが、それを得ることはできません。

私が使用する必要があるインスタンスは、ifステートメント内にあるか、別の変数またはエコーで宣言しています。

私はそれがはっきりしていることを望みます。前もって感謝します。

+0

これはシェル関数用ですか、または前のコマンドラインで最後の引数を取得しようとしていますか? – sarnold

+0

することができます:eval echo \ $$# – wisent

答えて

17

${!#}が必要です。これは、引数countと間接を組み合わせたものです。ここで

+1

と 'eval last = \ $$#'を経由して間接参照がないシェルの場合! – Idelic

+0

これは私が探しているようです。ありがとうございました。 – leeman24

+0

そして、あなたが意味するものなら、変数としてt $ {!#}を割り当てることはできません。しかし、eval last = \ $$#は私のために働いた。私はあなたが間接指導の欠如によって何を意味したのかと思う – leeman24

3

は別の方法です:

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

は、テストを与える:

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

これは、より直接的なアプローチのように思える:

${@: -1} 

いくつかのより詳細な情報here。私はBash以外の移植性についてはわかりません。

関連する問題