Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何让CURL保存到其他目录?_Bash_Curl - Fatal编程技术网

Bash 如何让CURL保存到其他目录?

Bash 如何让CURL保存到其他目录?,bash,curl,Bash,Curl,我需要能够传递文件下载的URL,以及要保存到的文件的路径 我认为这与旋度上的-O和-O有关,但我似乎无法理解 例如,这就是我现在在bash脚本中使用的内容: #!/bin/sh getsrc(){ curl -O $1 } getsrc http://www.apache.org/dist/ant/binaries/apache-ant-1.7.1-bin.tar.gz 如何更改curl语句以便执行以下操作 getsrc http://www.apache.org/dist/ant

我需要能够传递文件下载的URL,以及要保存到的文件的路径

我认为这与旋度上的-O和-O有关,但我似乎无法理解

例如,这就是我现在在bash脚本中使用的内容:

#!/bin/sh

getsrc(){
    curl -O $1
}

getsrc http://www.apache.org/dist/ant/binaries/apache-ant-1.7.1-bin.tar.gz
如何更改curl语句以便执行以下操作

getsrc http://www.apache.org/dist/ant/binaries/apache-ant-1.7.1-bin.tar.gz /usr/local

并让它将文件保存到/usr/local?

嗯。。。你可能想做的是

getsrc(){
    ( cd $2 > /dev/null ; curl -O $1 ; ) 
}

O(大写字母O)表示存储在一个名为“远程文件”的本地文件中,但忽略远程路径组件。为了能够存储在一个特定的目录中,最简单的方法是cd到它。。。我在一个子shell中这样做,因此dir更改不会传播

如果这是一个脚本,您应该确保您已经准备好应对任何意外情况:

getsrc() {
    ( cd "$2" && curl -O "$1" )
}
这意味着引用参数,以防它们包含shell元字符,如问号、星星、空格、制表符、换行符等

这还意味着在目标目录不存在的情况下,在
cd
curl
命令之间使用
&&
操作符(如果不使用它,curl仍将无误下载,但将文件放在错误的位置!)

该函数有两个参数:

  • 应下载的数据的URL
  • 应存储数据的本地路径(使用基于URL的文件名)
要指定本地文件名而不是路径,请使用更简单的:

getsrc() {
    curl "$1" > "$2"
}