【问题标题】:Bash, loop unexpected stopBash,循环意外停止
【发布时间】:2018-09-07 15:21:43
【问题描述】:

我的 bash 脚本的最后一部分有问题。它接收来自 500 个网址的输入,并且应该从每个网址获取服务器信息。它工作了一会儿,然后就像 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

【问题讨论】:

  • 将您的代码粘贴到shellcheck.net 以获得一些重要反馈
  • 另外,请阅读stackoverflow.com/help/mcve
  • 首先从您传递给curl 的选项中删除--silent。如果您的 curl 调用之一失败,可能会导致提前退出,而您不会知道。
  • 仅供参考,“摆脱 dos 废话” sed 命令没有任何作用。
  • printf "%s\n" "${myWebsitesarray[@]}" 会更简洁更正确。

标签: bash loops curl scripting


【解决方案1】:

如果您实际上将 --connect-timeout 选项传递给 curl,那肯定会有所帮助。如所写,您当前正在传递单个参数 --fail --connect-timeout $timeout,而不是 3 个不同的参数 --fail--connect-timeout$timeout。这是您不应该引用变量的一种情况。 IOW,使用:

curl --head $curlOptions "$line"

【讨论】:

  • 你确实意识到这是一个超过 2 年的帖子,我不是不在课堂上,而是我已经毕业了。
  • 不。没看日期。未来的读者也不会在这里寻找解决方案。您放在互联网上的内容将永远可用。 :)
猜你喜欢
  • 2015-08-06
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 2015-03-22
  • 1970-01-01
  • 2021-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多