curl:当文件是变量时,(26)无法打开文件

时间:2016-11-14 15:05:15

标签: 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

基本上我试图将USB驱动器上的所有文件都上传到本地服务器。 curl命令给了我麻烦。我可以将这些文件移动到我在此系统上安装的驱动器,但我无法使用curl命令发送它们。我根据其他相关问题尝试了@"$file"@\"$file\"的变体,但我无法使其发挥作用。然而令人讨厌的是,当我这样做时:

curl -i -X POST -F files=@/absolute/path/to/my/file.txt 192.168.1.122:5000/upload

它按预期工作。我怎样才能在循环中使用它?

1 个答案:

答案 0 :(得分:3)

所以我最终找出了一个解决方案,我会分享以防其他人遇到这个问题。我不确定为什么修复它但我只需要在curl命令中的files=@$file周围加上引号:

curl -i -X POST -F "files=@$file" 192.168.1.122:5000/upload

将此留在这里以防万一对某人有用。