如何for循环CURL命令?

问题描述 投票:0回答:2

我正在使用 Watson 的 Speech-To-Text Lite 服务,并且正在尝试找到一种方法来自动加载新音频文件进行转录。我对 Bash 很陌生,所以我什至连最基本的术语都不清楚 - 所以我发现这个问题很难找到解决方案。

对于单个用例,我运行以下文件(我的 API 密钥用“MY APIKEY”省略)

curl -X POST -u "apikey: MY APIKEY" --header "Content-Type: audio/flac" --data-binary "@audiofile_1.flac" "https://gateway-lon.watsonplatform.net/speech-to-text/api/v1/recognize?model=en-US_BroadbandModel&speaker_labels=true" > C:/Users/outputpath/output_1.txt

我本质上想要实现的是克服必须手动键入和重新键入音频文件和输出的名称的问题。因此,如果我有三个(或更多)音频文件(即audiofile_1、2和3.flac),我想创建一个与每个音频文件相对应的输出文件 - 一些可能有助于解释我的意思的伪代码是

files = [file_1, file_2, file_3]

for file_x in files:
    run curl command
    save as output_x
bash curl ibm-watson speech-to-text
2个回答
3
投票

你快明白了。你只需要学习一些 shell 语法:

files=("file_1" "file_2" "file_3")

for file_x in "${files[@]}"
do
    curl -X POST -u "apikey: MY APIKEY" --header "Content-Type: audio/flac" --data-binary "@${file_x}" "https://gateway-lon.watsonplatform.net/speech-to-text/api/v1/recognize?model=en-US_BroadbandModel&speaker_labels=true" > "C:/Users/outputpath/${file_x}.txt"
done

首先使用文件列表创建

files
数组。然后,您迭代这些文件并对每个文件运行
curl
命令。


0
投票

我们有一个用例来获取在 sitecore 中为不同区域设置定义的主页 json。

#!/bin/bash

SITE_CORE_BASE_URL="https://mysitecoreserver.com/sitecore/api/layout/render/jss?item=home"
PARAM_API_KEY="1234567890"

declare -a SUPPORTED_LOCALES=("en" "fr" "de" "nl" "it" "es" "pt")

for locale in "${SUPPORTED_LOCALES[@]}";
do
SITE_CORE_HOME_PAGE_JSON_URL="$SITE_CORE_BASE_URL&sc_lang=$locale&sc_apikey=$PARAM_API_KEY"
  curl -s "$SITE_CORE_HOME_PAGE_JSON_URL" > assets/sitecore/homepage_$locale.json
done

因此,此脚本循环支持的语言环境,使用curl命令从sitecore获取主页json,并将输出写入相关文件中的给定路径

© www.soinside.com 2019 - 2024. All rights reserved.