我有一个如下所示的脚本,我希望脚本循环通过变量并为每个变量创建一个文件。我已经研究过了,却找不到办法去做。可能是我的googling不够格。
API="link to API"
#city
newyork="latitude-longitude"
boston="latitude-longitude"
miami="latitude-longitude
curl -s "$API$city" > $city.txt 我尝试将变量放在不同的文件中,然后为每一行创建一个循环,但是脚本当然包括变量的名称。不确定如何在不使用数组的情况下攻击此问题。
发布于 2022-11-14 16:04:14
输入数据的两种解决方案:散列( Andrey的解决方案)或文件
哈希
#! /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文件
#! /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)"与!的替代
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这样的文件,第二种方法可能是正确的(带有适应性)。
https://stackoverflow.com/questions/74433952
复制相似问题