curl:(26)文件为变量时无法打开文件

sTr*_*gin 4 bash curl

我正在尝试将文件列表上传到服务器。这是我拥有的脚本

files=$(shopt -s nullglob dotglob; echo /media/USB/*) > /dev/null 2>&1
if (( ${#files}  ))
    then
            for file in $files
            do
                    echo "Filename"
                    echo $file
                    curl -i -X POST -F files=@$file 192.168.1.122:5000/upload
            done
Run Code Online (Sandbox Code Playgroud)

基本上,我试图将USB驱动器上的所有文件都上传到我的本地服务器。curl命令给我带来麻烦。我可以将这些文件移动到安装在该系统上的驱动器中,但无法使用curl命令发送它们。我试图在变化@"$file",并@\"$file\"根据其他相关的问题,但我一直没能得到这个工作。但是令人讨厌的是,当我这样做时:

curl -i -X POST -F files=@/absolute/path/to/my/file.txt 192.168.1.122:5000/upload
Run Code Online (Sandbox Code Playgroud)

它按我的预期工作。我如何才能在我的循环中使用它?

sTr*_*gin 6

因此,我最终想出了一个解决方案,以防万一其他人遇到此问题。我不确定为什么要解决这个问题,但是我只需要files=@$file在curl命令中的引号周围加上引号即可:

curl -i -X POST -F "files=@$file" 192.168.1.122:5000/upload
Run Code Online (Sandbox Code Playgroud)

留在这里,以防对某人有用。

  • 奇怪的是,我遇到了相反的情况:在 `for file in /my_folder/*.jpg; 中 执行 echo $file; 时间curl -X POST http://my_server/my_endpoint -F media=@$file; 完成`我必须删除引号才能使其看到文件! (2认同)