【发布时间】:2014-03-16 22:05:47
【问题描述】:
我编写了以下 bash 脚本来检查来自 domain.list 的域列表和来自 dir.list 的多个目录。
@ 是第一个域,它首先尝试在以下位置查找文件 http://example.com 如果成功脚本完成并退出没有问题。
如果失败就去检查它
https://example.com
如果没问题,脚本完成并退出,
如果不
检查它在
http://example.com/$list 的不同目录。
如果文件找到脚本完成并退出,如果找不到
然后去检查它
https://example.com/$list的不同目录
但问题是,当第一次检查失败和第二次检查失败时,它会进入第三次检查,但它一直在循环,在第三个命令和第四个命令,告诉它找到文件或目录列表完成。
我希望脚本在到达第三个命令时运行它并在目录列表中检查它告诉列表完成而不是第四个命令告诉它完成
在我的脚本中,它不断检查多个目录中的单个域,每次检查一个新目录时,它都会从 bagain 启动整个脚本并从头开始再次运行第一个命令和第二个命令,我不需要那个,大损失时间
谢谢
#!/bin/bash
dirs=(`cat dir.list`)
doms=( `cat domain.list`)
for dom in "${doms[@]}"
do
for dir in "${dirs[@]}"
do
target1="http://${dom}"
target2="https://${dom}"
target3="http://${dom}/${dir}"
target4="https://${dom}/${dir}"
if curl -s --insecure -m2 ${target1}/test.txt | grep "success" > /dev/null ;then
echo ${target1} >> dir.result
break
elif curl -s --insecure -m2 ${target2}/test.txt | grep "success" > /dev/null;then
echo ${target2} >> dir.result
break
elif curl -s --insecure -m2 ${target3}/test.txt | grep "success" > /dev/null; then
echo ${target3} >> dir.result
break
elif curl -s --insecure -m2 ${target4}/test.txt | grep "success" > /dev/null ; then
echo ${target4} >> dir.result
break
fi
done
done
【问题讨论】:
-
也许
break 2会有所帮助 -
放在哪里??在哪一部分??
-
http://example.com:xyz中冒号后面的正常名称是“端口”,而不是“目录”。 -
对不起,我弄错了,因为我从过去编写的另一个代码中复制了代码
标签: bash loops if-statement for-loop