我有一个文本文件
Google.com
Youtube.com
Gmail.com
Yahoo.com
Run Code Online (Sandbox Code Playgroud)
我正在尝试用 Lynx 打开它们。这是论文。
我会将所有这些链接存储在一个 txt 文件中,比如 links.txt,然后我需要用 Lynx 打开它们,然后使用 kill 终止 Lynx。
这里是我写的代码,但它不正确
for i in links.txt
do
lynx $i
sleep 10
pkill lynx
done
Run Code Online (Sandbox Code Playgroud)
这里有什么问题?
经过几次迭代...
for url in $(cat links.txt); do
timeout 10 lynx "$url"
done
Run Code Online (Sandbox Code Playgroud)
Lynx 正在阻塞(并且必须工作),因此睡眠无法正常工作,并且它还试图获取标准输入,这使得管道变得“有趣”困难。有关在文件中迭代行的信息,请参见此处。
Lynx 的允许 cookie 提示可能有点烦人。如果出现问题,您可以更改其设置,也可以传入-accept_all_cookies
标志,如下所示:
for url in $(cat links.txt); do
timeout 10 lynx -accept_all_cookies "$url"
done
Run Code Online (Sandbox Code Playgroud)
今天我学会了timeout
命令,所以我很高兴。
要在最后打印状态,我能看到的唯一方法是单独检查 URL 是否正常,如下所示:
for url in $(cat links.txt); do
timeout 10 lynx -accept_all_cookies "$url"
if [[ $(curl -o /dev/null --silent --head --write-out '%{http_code}\n' "$url") -eq "200" ]]; then
echo "Getting $url successful"
else
echo "Getting $url unsuccessful"
fi
done
Run Code Online (Sandbox Code Playgroud)