Bash аргумент командной строки для выбора массива строк для l oop через - PullRequest
2 голосов
/ 23 апреля 2020

Скрипт bash будет содержать внутри себя несколько массивов, каждый из которых имеет разные города, и командная строка arg $ 1 показывает, как выбрать какой массив через l oop, так что статически выполнить GA это

#!/bin/bash
GA=( Atlanta Rome )
FL=( Jacksonville Miami )

for city in "${GA[@]}"
do
  echo $city
done

Но как использовать командную строку arg $ 1, чтобы выбрать какой массив до go через? Я знаю, что расширение скобок не может делать переменные, поэтому я думаю, что нужно делать это без скобок, но не знаю, как?

1 Ответ

3 голосов
/ 24 апреля 2020

Вы можете использовать переменную nameref (см. Пример в Bash руководстве ):

#!/bin/bash

declare -n arr=$1
GA=( Atlanta Rome )
FL=( Jacksonville Miami )

for city in "${arr[@]}"; do
  echo "$city"
done

Вывод:

$ ./script.sh GA
Atlanta
Rome
$ ./script.sh FL
Jacksonville
Miami
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...