从 Bash 脚本打开 URL

rɑː*_*dʒɑ 3 bash url lynx

我有一个文本文件

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)

这里有什么问题?

Oli*_*Oli 5

经过几次迭代...

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)