Bash 在CURL中使用变量

Bash 在CURL中使用变量,bash,shell,curl,Bash,Shell,Curl,我使用curl向Skyling提交一个文件,然后获得站点提供的输出,如下所示: 我希望使用变量文件输入,而不是每次直接在代码上写入文件 当我将文件hmmfile.hmm直接写入代码时,输出就是预期的输出。但是当我设置一个变量HMM并将该变量用作我的文件时,putput是空的 这项工作: curl -H 'Accept:application/json' -F file='@hmmfile.hmm' -F processing=hmm http://skylign.org 这并不是: HMM=$

我使用curl向Skyling提交一个文件,然后获得站点提供的输出,如下所示:

我希望使用变量文件输入,而不是每次直接在代码上写入文件

当我将文件hmmfile.hmm直接写入代码时,输出就是预期的输出。但是当我设置一个变量HMM并将该变量用作我的文件时,putput是空的

这项工作:

curl -H 'Accept:application/json' -F file='@hmmfile.hmm' -F processing=hmm http://skylign.org
这并不是:

HMM=$1

curl -H 'Accept:application/json' -F file="${HMM}" -F processing=hmm http://skylign.org
输出应如下所示:

"url":"http://skylign.org:8000/logo/6BBFEB96-E7E0-11E2-A243-DF86A4A34227",
  "uuid":"6BBFEB96-E7E0-11E2-A243-DF86A4A34227",
  "message":"Logo generated successfully"
你应该试试

HMM=$1

curl -H 'Accept:application/json' -F file=@"${HMM}" -F processing=hmm http://skylign.org
#                                         ^
#                                         |
#                                         |

@是必需的,因为它告诉curl该字段是一个文件上载。

如果$1在开始时没有@,它将不起作用,您必须在文件名前面加上@符号