通过CURL命令行上传名为file的变量

时间:2014-07-15 08:54:06

标签: regex file curl command-line upload

我正在尝试使用Curl command line工具将文件上传到服务器。上传的文件由构建工具生成,因此其名称是可变的,取决于项目的版本。

例如:

  

要上传的文件名称为:puppet-14.1.6-snapshot.zip //其中14.1.6是项目的版本

这是我的(工作)CURL命令:

  

curl -u admin:admin -F file = @" target / puppet-14.1.6-snapshot.zip" -F name =" puppet-core-pkg" -F force = true -F install = true http://myserver.com:4502/service.jsp

上述调用完美无缺,但我试图找到一个替代方案,每当新版本的项目结束时我都不需要更改文件参数。

我已经尝试过这两个

file=@"target/puppet-*-snapshot.zip" //Does not work
file=@"target/puppet-[*]-snapshot.zip" //Does not work

是否可以使用一些正则表达式并上传与给定正则表达式匹配的文件?

2 个答案:

答案 0 :(得分:2)

我找到了一个临时的解决方法,但仍然不是一个令人信服的解决方案。在这里:

package_name=$(ls | grep puppet-)

curl -u admin:admin -F file=@"target/$package_name" -F name="puppet-core-pkg" -F force=true -F install=true http://myserver.com:4502/service.jsp

我知道只有一个文件与puppet-匹配,因此package_name包含要上传的文件名。

虽然这对我有用,但我打开这个问题以获得优雅的解决方案。

答案 1 :(得分:0)

这是目录中唯一的文件吗?如果是这样,那么你可以让变量获取目录中文件的名称,然后执行:

curl -u admin:admin -F file="$TheFile" # and so and so forth