如何自动定位下载脚本的输出

如何自动定位下载脚本的输出

我编写了一个非常基本的脚本,让我可以使用 URL 下载文件。这是我的脚本:

#!/bin/sh

# A script that downloads a file based on url

function filedl() {
  echo "What is the url for the file?"
  read FILEURL
  wget $FILEURL
  echo "Download complete"
}

filedl

我希望能够做的是在下载文件后立即定位下载的文件,并使用脚本中的其他命令或函数自动将其移动到预定义的目录。

我已经阅读了一些有关如何将输出通过管道传输到变量的线程,但我无法弄清楚如何使用我的脚本来做到这一点。这些是我读过的主题:

我尝试使用类似以下内容创建一个新变量,但它似乎不起作用:

NEWFILE=$(wget $FILEURL)

我还尝试了对函数调用进行修改的脚本变体:

NEWFILE=$(filedl)<-- 这似乎也没有做任何事情。

最后,我将命令移出了函数,并仅列出了每个命令以及上面描述的变量定义尝试的变体。我仍然不知道该怎么做。

我对 shell 脚本还很陌生,所以如果我遗漏了一些应该很明显的东西,我深表歉意。

答案1

不要将文件捕获在变量中,不必要地将整个文件放入内存中,而是使用wget's --output-document/-O标志和以下两个变体之一:

wget -O /path/to/file ... http://example.com/foobar
wget -O - ... http://example.com/foobar > /path/to/file

.../path/to/file您想要的任何路径+文件名在哪里。 (并且...仅代表您可能使用的任何其他标志或参数。)

或者,如果您想保留下载文件的默认名称,请使用--directory-prefix-P并仅指定文件应保存到的目录。

wget -P /some/path ... http://example.com/foobar

相关内容