Bash

如何獲取參數數組的bash索引?

  • January 29, 2019

我想要參數索引,

並且可以通過 dummy var 得到它:

dummy=( $@ )
echo ${!dummy[@]}

但是有沒有直接的方法來獲得它們,比如

$!@ ... not working
$!* ... not working

… 或類似的東西?

注意:我想在沒有 arr var 的情況下擁有的原始功能是:

function indexof()
{  search="$1"; shift; arr=( $@ ) 
  for i in "${!arr[@]}"; do [ "$search" == "${arr[$i]}" ] && return $i; done
  return -1
}

您可以從參數的數量計算:

seq ${#@}

你不需要一個虛擬數組。您可以使用計數器變數:

indexof() {
   search="$1"; shift
   i=0
   for arg; do
       [ "$search" = "$arg" ] && return $i
       ((i++))
   done
   return -1
}

請注意,預設情況下for arg; do使用"$@",這就是in "$@"可以省略的原因。

引用自:https://unix.stackexchange.com/questions/332071