使用curl bash脚本下载文件

使用curl bash脚本下载文件,bash,curl,Bash,Curl,我正在尝试下载带有由bash脚本的for循环进行的curl调用的大文件 for item in $LIST do i=$(expr $i + 1) echo "Downloading $i. $item" URL="${ROOT_URL_ODATA}/Products('$item')/\$value" [ "$VERBOSE" = "true" ] && show_text "$CURL_PREFIX -JO \"$URL\

我正在尝试下载带有由bash脚本的for循环进行的curl调用的大文件

for item in $LIST
   do
      i=$(expr $i + 1)
      echo "Downloading $i. $item"
      URL="${ROOT_URL_ODATA}/Products('$item')/\$value"
      [ "$VERBOSE" = "true" ] && show_text "$CURL_PREFIX -JO \"$URL\""      
      $CURL_PREFIX -JO "$URL"
   done
示例urlhttps://scihub.esa.int/dhus/odata/v1/Products‘931b6710-e6a5-4fd5-8314-16011E551AB’/$value

我要下载的命令:

curl -gu user:passwd -JO 'https://scihub.esa.int/dhus/odata/v1/Products('931b6710-e6a5-4fd5-8314-16011e5515ab')/$value'
当从脚本运行它时,我得到curl-gu username:passwd:command未找到,但当从bash运行它时,我得到100%的文件在一秒钟内下载,尽管文件大约4GB大


有什么问题吗?

@TomFenech当我删除字符串时,我在意外标记“`附近出现语法错误,当我仅用引号分隔括号时,我发现文件名没有长度,无法写入正文。虽然这与他们的示例脚本中的内容相同。我想你误解了我的建议——删除引号并不会让事情变得更好,事实上,它可能会让事情变得更糟。问题是,您正在构建一个包含多个参数的命令,但使用的是字符串。如链接中所述,请改用数组。我承认这是一种不好的做法,可能会导致问题,但在这种情况下不会导致问题。当我将for循环从函数体中带出来时,一切都正常工作。您需要玩这些引用游戏的事实是因为试图将命令存储在字符串中。一旦你需要开始玩报价游戏,你通常已经输了。停止使用字符串来存储命令,您可能会有更好的运气让它正常工作,因为您将能够简单而正确地引用内容。