bash - Bash 命令行 arg 选择要循环遍历的字符串数组
问题描述
bash 脚本将在其中包含多个数组,每个数组都有不同的城市,命令行参数 $1 是如何选择要循环的数组,所以静态地做 GA 它的 this
#!/bin/bash
GA=( Atlanta Rome )
FL=( Jacksonville Miami )
for city in "${GA[@]}"
do
echo $city
done
但是如何使用命令行参数 $1 来选择要通过的数组呢?我知道大括号扩展不能做变量,所以我想需要在没有大括号的情况下这样做,但不知道怎么做?
解决方案
您可以使用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
推荐阅读
- php - 当内容以这种方式混合时如何从 php curl 中抓取 js 值
- go - K8s operator 监听特定的 config map
- python-3.x - 如何计算csv文件中列内的平均值?
- javascript - 过滤数字和“/”字符的正则表达式
- r - 如何在嵌套函数中使用包“purrr”中的“map”?
- java - 如何继续测试使用 jMockIt 接收“类”参数的函数?
- regex - 尽管似乎可以在在线测试仪上工作,但 Perl 正则表达式没有被替换
- python - 在不分享源代码的情况下展示python项目
- mysql - 比较多个记录中的 2 个日期
- python - 使用 Python 在块中下载文件时如何获取 ETA?