Я пытаюсь перенести скрипт из BASH в ASH (Almquist SHell) и столкнулся с проблемой с косвенными ссылками. Следующая функция
cmd() {
# first argument is the index to print (ie label)
arg=$1
# ditch the first argument
shift
# print the label (via indirect reference)
echo "${!arg}"
}
должен выдать следующий результат
cmd 1 one two three
one
cmd 2 one two three
two
cmd 3 one two three
three
Это работает, как и ожидалось, в BASH, но генерирует «синтаксическую ошибку: неправильная замена» при запуске в режиме ASH (или DASH). Должно ли это работать? Если нет, есть ли альтернатива использованию косвенных ссылок?