首页 > 解决方案 > Bash 命令行 arg 选择要循环遍历的字符串数组

问题描述

bash 脚本将在其中包含多个数组,每个数组都有不同的城市,命令行参数 $1 是如何选择要循环的数组,所以静态地做 GA 它的 this

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

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

但是如何使用命令行参数 $1 来选择要通过的数组呢?我知道大括号扩展不能做变量,所以我想需要在没有大括号的情况下这样做,但不知道怎么做?

标签: bash

解决方案


您可以使用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

推荐阅读