ファイルのリストをサーバーにアップロードしようとしています。これは私がcurl:(26)ファイルが変数のときにファイルを開くことができませんでした。
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 [email protected]$file 192.168.1.122:5000/upload
done
基本的に私は、USBドライブ上のすべてのファイルを取り、自分のローカルサーバにアップロードしようとしていているスクリプトです。カールコマンドは私にトラブルを与えています。私はこれらのファイルを私がこのシステムにマウントするドライブに移動できますが、私はcurlコマンドでそれらを送ることができませんでした。他の関連する質問に基づいて@"$file"
と@\"$file\"
のバリエーションを試しましたが、これを動作させることができませんでした。しかし、迷惑なことは、私がこれをするときです:
curl -i -X POST -F [email protected]/absolute/path/to/my/file.txt 192.168.1.122:5000/upload
私は期待どおりに動作します。これを私のループで動かすにはどうすればいいですか?
考慮すべき点の1つは、スクリプトの実行場所とファイルの場所の位置です。あなたがファイル名を取得する方法は、 "echo/media/USB/*"を通して行われます。これはファイル名を取得しますが絶対パスは取得しません。あなたのスクリプトは/ media/USBから走っていますか?そうでない場合、これが動作するように絶対パスを取得する必要があります。 –
あなたが何かに乗っている可能性があります...スクリプトは "/ media/USB /"で実行されていませんが、ファイルパスをエコーすると絶対パスになります。 "/media/USB/filename.txt"は "$ file"ですが、テストしたところ、実際には "/ media/USB"というディレクトリに行き、コマンドを実行してファイルを入力しました。そこ。絶対パスでUNCパスを意味しますか? –
/media/usb/filename.txt絶対パスとfilename.txtは相対パスです。 –