我试图在Linux(Debian)中编写bash脚本,用于在启动期间从用户提供的网站下载图形文件。我不确定我的代码是否正确,但首先问题是当我尝试使用网站运行我的脚本时,例如http://www.bbc.com/
错误显示:http://www.bbc.com/ : invalid identifier
。我甚至尝试过一个只有几个JPG文件的简单网站。我的下一个问题是找出如何从包含互联网地址图像的.txt文件下载文件。
#!/bin/bash
# $1 - URL $2 - new catalog name
read $1 $2
url=$1
fold=$2
mkdir -p $fold
if [$# -ne 3];
then
echo "Wrong command"
exit -1
fi
curl $url | grep -o -e "<img src=\".*\"+>" > img_list.txt |wc -l img_list.txt | lin=${% *}
baseurl=$(echo $url | grep -o "https?://[a-z.]*"")
curl -s $url | egrep -o "<img src\=[^>]*>" | sed 's/<img src=\"\([^"]*\).*/\1/.*/\1/g' > url_list.txt
sed -i "s|^/|$baseurl/|" url_list.txt
cd $fold;
接下来我该怎么办?
答案 0 :(得分:0)
从我将要使用的网页下载每张图片:
mech-dump --absolute --images http://example.com | xargs -n1 curl -O
但需要安装WWW::Mechanize
包中的mech-dump命令。
使用列表文件
while read -r url folder
do
mkdir -p "$folder" || exit 1
(cd "$folder" && mech-dump --absolute --images "$url" | xargs -n1 curl -O)
done < list.txt
(假设没有url,也没有包含空格的文件夹)。
答案 1 :(得分:0)
错误显示:
http://www.bbc.com/ : invalid identifier
您使用read
是错误的;变化
read $1 $2
url=$1
fold=$2
到
read url fold
或决定在命令行中指定参数并仅省略read $1 $2
。
此外,[
]
中的每个操作数必须与括号分开;变化
if [$# -ne 3];
到
if [ -z "$fold" ]