Bash関数内でスクリプトの位置引数を取得する方法はありますか?

Bash関数内でスクリプトの位置引数を取得する方法はありますか?

位置パラメータを取得するには、次の変数が使用されます。

$1, $2, $3, etc.
$@
$#

ただし、スクリプトの位置引数と関数の位置引数の両方として使用できます。

関数内でこれらの変数を使用すると、関数の位置引数が与えられます。

関数内でスクリプトの位置パラメータを取得する方法はありますか?

ベストアンサー1

いいえ、直接ではありません。これは関数パラメータがそれを隠すためです。ただし、Bashまたはkshでは、スクリプトの引数を次に割り当てることができます。別の配列、そしてそれを使用してください。

#!/bin/bash
ARGV=("$@")
foo() {
     echo "number of args: ${#ARGV[@]}"
     echo "second arg: ${ARGV[1]}"
}
foo x y z 

配列番号付けは0から始まるので、次に$1進みます。${ARGV[0]}

おすすめ記事