首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用bash循环变量

如何用bash循环变量
EN

Stack Overflow用户
提问于 2022-11-14 15:18:56
回答 1查看 76关注 0票数 0

我有一个如下所示的脚本,我希望脚本循环通过变量并为每个变量创建一个文件。我已经研究过了,却找不到办法去做。可能是我的googling不够格。

代码语言:javascript
复制
API="link to API"

#city
newyork="latitude-longitude"
boston="latitude-longitude"
miami="latitude-longitude

curl -s "$API$city" > $city.txt 

我尝试将变量放在不同的文件中,然后为每一行创建一个循环,但是脚本当然包括变量的名称。不确定如何在不使用数组的情况下攻击此问题。

EN

回答 1

Stack Overflow用户

发布于 2022-11-14 16:04:14

输入数据的两种解决方案:散列( Andrey的解决方案)或文件

哈希

代码语言:javascript
复制
#! /usr/bin/env bash

API="link to API"

# cities
declare -A CITIES_HASH=(
    ["newyork"]="latitude-longitude"
    ["boston"]="latitude-longitude"
    ["miami"]="latitude-longitude"
)

# "[@]" for all hash entries prefixed by "!" to obtains keys instead of values
for CITY in "${!CITIES_HASH[@]}"; do
    curl -s "$API${CITIES_HASH[$CITY]}" > "${CITY}.txt"
done

文件

代码语言:javascript
复制
#! /usr/bin/env bash

API="link to API"

while read -r; do
    [[ -z "${REPLY}" ]] && continue
    CITY="${REPLY%%=*}"
    LAT_LONG="${REPLY#*=}"
    LAT_LONG="${LAT_LONG//\"/}"
    curl -s "$API$LAT_LONG" > "${CITY}.txt"
done <<<"$(cat latitude-longitude.txt; echo)"

!的替代

代码语言:javascript
复制
echo "Alternative"
#cities
newyork="ny-latitude-longitude"
boston="bo-latitude-longitude"
miami="mi-latitude-longitude"

for CITY in newyork boston miami; do
    echo curl -s "$API${!CITY}" ">" "${CITY}.txt"
done

没有任何解决办法比其他办法更好。这取决于你的线人。当然,如果您读取像/usr/share/zoneinfo/zone.tab这样的文件,第二种方法可能是正确的(带有适应性)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74433952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档