テキストファイルがあります
Google.com
Youtube.com
Gmail.com
Yahoo.com
Lynxでそれらを開こうとしています。こちらが論文です。
これらのリンクはすべて、links.txtなどのtxtファイルに保存し、Lynxでそれらを開き、killを使用してLynxを終了する必要があります。
ここで私が書いたコードですが、正しくありません
for i in links.txt
do
lynx $i
sleep 10
pkill lynx
done
どうしたの?
数回繰り返した後...
for url in $(cat links.txt); do
timeout 10 lynx "$url"
done
Lynxはブロックしているため(動作する必要があります)、スリープは適切に動作せず、stdinを取得しようとします。 ファイル内の行の繰り返しについてはこちらを参照 。
Lynxは、Cookieを許可するためのプロンプトを表示するのが少し面倒です。問題がある場合は設定を変更するか、次のように-accept_all_cookies
フラグを渡すことができます。
for url in $(cat links.txt); do
timeout 10 lynx -accept_all_cookies "$url"
done
今日は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
スクリプトでは、lynx呼び出しは端末をロックし、「Q」を押したときにlynxが終了するため、sleep 10およびpkillを呼び出すことはありません。
だから私は別の何かを好む。なぜwgetを使用しないのですか。このようなもの:
for url in $(cat links.txt); do
wget -qO- $URL
sleep 1
done
リンクをダウンロードした後、wgetは終了します。 Lynxは対話型のコンソールブラウザに似ており(端末をロックします)、スクリプト用には作成されていません。