Bash 在url中找到非法字符

Bash 在url中找到非法字符,bash,curl,bash4,Bash,Curl,Bash4,我试图从存储在文本文件中的具有不同ID的api中提取数据,但我一直收到消息“curl(3):在url中找到非法字符” 文本文件包含: 362ae-235sa-3h26g-136gr 652ae-290sa-3h26g-132gr 394ae-275sa-k726g-106gr 362ae-257sa-3le0g-136gr 我的剧本: for j in $(cat ids.json) do curl -u "$workspace_username":"$workspace_pa

我试图从存储在文本文件中的具有不同ID的api中提取数据,但我一直收到消息“curl(3):在url中找到非法字符”

文本文件包含:

362ae-235sa-3h26g-136gr
652ae-290sa-3h26g-132gr
394ae-275sa-k726g-106gr
362ae-257sa-3le0g-136gr
我的剧本:

for j in $(cat ids.json)    
do
    curl -u "$workspace_username":"$workspace_password" \
         "https://gateway.watsonplatform.net/assistant/api/v1/workspaces/$j/logsversion=2018-07-10" \
     | jq '.' | jq -r '.logs[]' >> test.json
    sleep 3
done

我是新来的。有人能帮我写脚本吗?

我可以用附加到文件
ids.json
中一行的CR重现您的问题。我可以假设这也是你的问题。我建议修改你的文件

您可以通过删除不属于您的ID的所有字符来自动执行此操作,这些字符应位于此文件中:

sed -i 's/[^0-9a-z-]//g' ids.json

“我试图从一个json文件中存储了不同ID的api中提取数据”这意味着什么?您的问题措词不当。“362ae-235sa-3h26g-136gr 652ae-290sa-3h26g-132gr 394ae-275sa-k726g-106gr 362ae-257sa-3le0g-136gr”看起来不是有效的JSON文件,我无法重现该问题。当我尝试它时(当然没有
-u
,因为我没有您的凭据),我得到了正确的401错误(未授权),因此URL本身似乎是正确的。也许您在
ids.json
文件中的某个地方有一个奇怪的字符?也许是CR或类似的?我建议重新创建此文件并尝试新版本。什么是
jq
?不管是什么,都可能是你的问题。其他一切看起来都很好。
jq
是一个处理json的工具,不会卷曲任何东西。所以这不太可能是问题所在。谢谢!这对我帮助很大。我真的很感激。