我有以下脚本:
for i in {1..16}; do
$wget http://url/$i.jpg -O C:/Users/User/Desktop/Test/
done
将文件保存为 test.sh 并在 Windows 上的 Git 中运行它。
这些文件在服务器上是活动的,但是当我运行脚本时,出现“没有这样的文件或目录”...
有什么想法吗?
答案1
如果不是因为您必须删除的字符$
和您必须重复的文件名,您的脚本基本上是正确的
for i in {1..16}; do
wget http://url/$i.jpg -O C:/Users/User/Desktop/Test/$i.jpg
done
实际上,该选项-O
要求写入文件名而不是目录。
-O file
--output-document=file
文档将不会写入适当的文件,而是所有文档将连接在一起并写入文件。
多说几句
在您的版本中$wget
,变量从未被分配,因此为空。
循环内的命令结果变为,例如,
http://url/1.jpg -O C:/Users/User/Desktop/Test/
该文件不存在于您的硬盘上。
要调查此类错误,您可以echo
在行中添加并查看循环生成的输出:
for i in {1..16}; do
echo $wget http://url/$i.jpg -O C:/Users/User/Desktop/Test/
done
它会揭示你的问题/错误。
答案2
我的 -P 目录尚未创建,因此 wget 没有地方下载文件。
需要将 -O 更改为 -P。为目录位置添加了“”。
现在正在工作
for i in {1..16}; do
wget http://url/$i.jpg -P "C:/Users/user/Desktop/Test"
done
还需要确保 Notepad++ 中的格式正确。将 EOL 转换从 Windows 更改为 Unix。