bash - 使用数组键的名称保存文件
问题描述
我有一个下载文件的脚本。链接由两部分组成:一个在 cur(稳定的)中,第二个在关联数组中。所以我想要一个脚本来下载文件并给我一个名字,就像我的 arrey 中的钥匙一样
declare -A metricssArray
metricssArray[key1]=some link
metricssArray[key2]=some link
curl --location --request GET 'First part of link'+${metricssArray[key1]} --output example.csv
我知道这会给出一个文件名“example.csv”
-output examle.csv
但我需要一个名为 key1.csv 的文件作为数组中的密钥
curl --location --request GET 'First part of link'+${metricssArray[key1]} --output example.csv
当我在 curl 中更改 ${metricssArray[key2]} 或 key3 时,应该使用 key2.csv 名称下载文件
或者也许我要下载所有这些,我需要了解文件属于链接/数组键
for key in "${!metricssArray[@]}"; do
# ........^..............^ iterates over the keys
curl --location \
--request GET \
--output "$key".csv \
-u name:password \
'firs part of the link'+${metricssArray[$@]}
done
我试图将 -u 放在链接之后,但我得到一个文件并在 403 状态码内(
解决方案
我不完全确定问题是什么。
如果您询问如何迭代关联数组,您可以这样做:
declare -A metricssArray
metricssArray[key1]=some link
metricssArray[key2]=some link
for key in "${!metricssArray[@]}"; do
# ........^..............^ iterates over the keys
curl --location \
--request GET \
--output "$key".csv \
'First part of link'+${metricssArray[$key]}
done
要构建 URL,您可能需要:
# the array notation does not require line continuations
curl_opts=(
--location
--request GET
--user "username:password"
)
url_root=http://example.com/start/of/path
for key in "${!metricssArray[@]}"; do
url="${url_root}/${metricssArray[$key]}"
curl "${curl_opts[@]}" --output "$key".csv "$url"
done
推荐阅读
- javascript - 使用reactjs提交时无法从对象中删除数组和属性(多个)
- nginx - .net core api 和 nginx 作为反向代理的性能问题
- azure - 如何从 Azure Key Vault 读取和更新 Azure Logic App 的 parameters.json 文件中的机密信息
- r - 将 ts 对象转换为人类可读的时间格式
- bash - Gatsby develop 命令在 macOS High Sierra 上失败,没有显示错误消息
- node.js - 如何将 Moodle 中的学生数据导入 LTI 工具(Web 应用程序)
- html - 如何在其 flexbox 父容器包装之前使子 div 包装?
- pytorch - PyTorch Jupyter Notebook 图像无法找到火炬
- firebase - 我的 FirebaseStorage 方法没有在 Flutter 中运行。在 `firebase_storage: ^4.0.0` 之后
- javascript - 具有嵌套父项和子项的复选框树视图。?