使用Curl下载文件的Bash脚本

Rob*_*ell 4 bash curl sed download

我正在尝试将一个小批量脚本拼凑起来下载文件,它将URL作为其第一个参数,将本地文件名作为其第二个参数.在测试中,我已经了解到它在输出文件名中跳过了空格,所以我尝试使用sed来逃避它们,但它没有用.

#!/bin/bash
clear
echo Downloading $1
echo
filename=`sed -e "s/ /\\\ /g" $2`
echo $filename
echo eval curl -# -C - -o $filename $1
Run Code Online (Sandbox Code Playgroud)

但我收到了消息

sed:outfile.txt:没有这样的文件或目录

这表明它试图将输出文件作为输入加载到sed而不是将输出文件名视为字符串文字.

这里的语法是什么?

cms*_*cms 5

正确引用参数,而不是转换它们可能是一种更好的方法

期望必须在shell脚本的参数中引用空格是很正常的

例如

#!/bin/bash
clear
echo Downloading $1
echo `curl -# -C - -o "${2}" "${1}"`
Run Code Online (Sandbox Code Playgroud)

这样叫

./myscript http://www.foo.com "my file"

或者,当你调用它们时,用'\'来逃避空格

./myscript http://www.example.com my\ other\ filename\ with\ spaces
Run Code Online (Sandbox Code Playgroud)