Crie um array em loop a partir do número de argumentos

#!/bin/bash
COUNTER=$#
until [ $COUNTER -eq 0 ]; do
args[$COUNTER]=\$COUNTER
let COUNTER-=1
done
echo ${args[@]}

Quando eu corro isso, recebo os seguintes resultados

user@host:~/sandbox# ./script.sh first second third
$1 $2 $3

e eu estou esperando para ecoar o que US $ 1, US $ 2 e US $ 3 não são um valor de texto de "US $ 1"

Eu estou tentando escrever um script no bash que irá criar uma matriz que é o tamanho do número de argumentos que eu dou.
eu estou esperando

user@host:~/sandbox# ./script.sh alpha bravo charlie
alpha bravo charlie

ou

user@host:~/sandbox# ./script.sh 23425 jasson orange green verb noun coffee
23425 jasson orange green verb noun coffee

Então, o objetivo é fazer

args[0]=$1
args[1]=$2
args[2]=$3
args[3]=$4

A maneira que eu tenho isso, o$1,$2,$3 não estão sendo interpolados, mas apenas sendo lidos como uma string de texto.

questionAnswers(1)

yourAnswerToTheQuestion