Linux

讀取具有 n 行的文件並列印完成的行數

  • August 25, 2019

我正在使用以下 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最後一行的輸入(否則未排序)
  • 添加了一些引號

引用自:https://unix.stackexchange.com/questions/537335