Вопрос

Как получить nй позиционный аргумент в Bash, где n является ли переменным?

Это было полезно?

Решение

Используйте функцию косвенного обращения Bash:

#!/bin/bash
n=3
echo ${!n}

Запускаю этот файл:

$ ./ind apple banana cantaloupe dates

Производит:

cantaloupe

Редактировать:

Вы также можете выполнить нарезку массива:

echo ${@:$n:1}

но не индексы массива:

echo ${@[n]}  #  WON'T WORK

Другие советы

Если N сохраняется в переменной, используйте

eval echo \${$N}

если это постоянное использование

echo ${12}

с тех пор как

echo $12

это не значит то же самое!

$1 $2 ... $n

$0 содержит название скрипта.

Как вы можете видеть в Bash на примере, вам просто нужно использовать автоматические переменные $ 1, $ 2 и так далее.

$# используется для получения количества аргументов.

Читать

Обработка позиционных параметров

и

Расширение параметров

$0:первый позиционный параметр

$1 ...$9:в аргументе перечислены элементы от 1 до 9

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top