Linux
讀取具有 n 行的文件並列印完成的行數
我正在使用以下 bash 腳本來檢查文件中的活動主機,
echo "Checking for 200 status code.." cat $1 | sort -u | while read line; do if [ $(curl -I -s "https://$line" -o /dev/null -w "%{http_code}\n") = 200 ] then echo $line >> livedomains else echo $line >> otherdomains fi done < $1
程式碼工作正常,我需要在一段時間後列印檢查的行數(url),以通知使用者要檢查的剩餘行數(url)。
#!/bin/bash # update status after step seconds or greater step=5 count=0 echo "Checking for 200 status code.." start=$(date +'%s') sort -u "$1" | while read line; do http_status=$(curl -I -s "https://$line" -o /dev/null -w "%{http_code}\n") case "$http_status" in 200) echo "$line" >> livedomains ;; 302) echo "$line" >> redirecteddomains ;; *) echo "$line" >> otherdomains esac ((count++)) now=$(date +'%s') if [ "$start" -le "$((now - step))" ]; then start=$now echo "completed: $count" fi done
更新間隔設置為 5 秒,您可以將其更改為 120。
**編輯:**我改變主意並使用計數器變數而不是
wc
.其他變化:
#!/bin/bash
在第一行添加了 shebang- 刪除
< $1
最後一行的輸入(否則未排序)- 添加了一些引號