Bash 猛击,循环意外停止
我的bash脚本的最后一部分有问题。它接收来自500个web地址的输入,并从每个web地址获取服务器信息。它工作了一段时间,但在45元素处停止。最后我的循环有什么想法吗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
#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[@]}
会更简洁、更准确。你知道这是一个两年多的帖子,不是我不在班上了,而是我已经毕业了。不。没有看日期。未来的读者也不会在这里寻找解决方案。您在互联网上发布的内容将永远可用。:)