Bash 猛击,循环意外停止

Bash 猛击,循环意外停止,bash,loops,curl,scripting,Bash,Loops,Curl,Scripting,我的bash脚本的最后一部分有问题。它接收来自500个web地址的输入,并从每个web地址获取服务器信息。它工作了一段时间,但在45元素处停止。最后我的循环有什么想法吗 #initializing variables timeout=5 headerFile="lab06.output" dataFile="fortune500.tsv" dataURL="http://www.tech.mtu.edu/~toarney/sat3310/lab09/" dataPath="/home/pjva

我的bash脚本的最后一部分有问题。它接收来自500个web地址的输入,并从每个web地址获取服务器信息。它工作了一段时间,但在45元素处停止。最后我的循环有什么想法吗

#initializing variables 
timeout=5
headerFile="lab06.output"
dataFile="fortune500.tsv"
dataURL="http://www.tech.mtu.edu/~toarney/sat3310/lab09/"
dataPath="/home/pjvaglic/Documents/labs/lab06/data/"
curlOptions="--fail --connect-timeout $timeout"

#creating the array
declare -a myWebsitearray

#obtaining the data file
wget $dataURL$dataFile -O $dataPath$dataFile

#getting rid of the crap from dos
sed -n "s/^m//" $dataPath$dataFile

readarray -t myWebsitesarray < <(cut -f3 -d$'\t' $dataPath$dataFile)

myWebsitesarray=("${myWebsitesarray[@]:1}")

websitesCount=${#myWebsitesarray[*]}

echo "There are $websitesCount websites in $dataPath$dataFile"

#echo -e ${myWebsitesarray[200]}

#printing each line in the array
for line in ${myWebsitesarray[*]}
do
echo "$line"
done

#run each website URL and gather header information
for line in "${myWebsitearray[@]}"
    do
        ((count++))
        echo -e "\\rPlease wait... $count of $websitesCount"
        curl --head "$curlOptions" "$line" | awk '/Server: / {print $2 }' >> $dataPath$headerFile       
    done

#display results
echo "Results: "
sort $dataPath$headerFile | uniq -c | sort -n
#初始化变量
超时=5
headerFile=“lab06.output”
dataFile=“fortune500.tsv”
数据URL=”http://www.tech.mtu.edu/~toarney/sat3310/lab09/”
dataPath=“/home/pjvaglic/Documents/labs/lab06/data/”
curlOptions=“--失败--连接超时$timeout”
#创建数组
声明-myWebsitearray
#获取数据文件
wget$dataURL$dataFile-O$dataPath$dataFile
#从dos中清除垃圾
sed-n“s/^m/”$dataPath$dataFile
readarray-t myWebsitesarray<>$dataPath$headerFile
完成
#显示结果
回显“结果:”
sort$dataPath$headerFile | uniq-c | sort-n

如果您真的将--connect timeout选项传递给curl,肯定会有所帮助。如前所述,您当前传递的是单个参数
--fail--connect timeout$timeout
,而不是3个不同的参数
--fail
--connect timeout
$timeout
。这是一个不应该引用变量的实例。注意,使用:

curl --head $curlOptions "$line"

将您的代码粘贴到中。对于一些重要的反馈信息,请阅读“从传递到
curl
的选项中删除
--silent
开始”。如果其中一个
curl
调用失败,可能会导致提前退出,而您不会知道。仅供参考,“摆脱dos垃圾”sed命令没有任何作用。
printf“%s\n”“${myWebsitesarray[@]}
会更简洁、更准确。你知道这是一个两年多的帖子,不是我不在班上了,而是我已经毕业了。不。没有看日期。未来的读者也不会在这里寻找解决方案。您在互联网上发布的内容将永远可用。:)