Bash 暂停卷曲以清除输出,然后继续
我希望这不是离题。这是背景: 我的朋友和我正在尝试解决这个在线难题,你基本上必须输入16位数字的组合;如果错误,该网站将显示不正确的,如果正确,一些其他消息,我们不知道。我们有前八个数字,所以我们认为使用curl强制执行并保存到输出以进行检查是可行的 我们已经这样实施了: 卷曲http://www.game.com/checkCombo.php?num1=[0-9]&num2=[0-9]…&num8=[0-9]>>output.txt 如您所见,我们基本上正在运行所有可能的组合,并将每个单独的输出附加到output.txt文件中 我们检查是否得到了正确的组合的方法,因为我们不知道它会说什么,是通过搜索不正确的数量;如果当我们打开文件时,我们已经处理了1000个组合,并且有1000个不正确的匹配项,那么我们知道我们还没有找到正确的匹配项。如果当我们打开文件时,我们已经经历了2000个组合,并且只有1999个不正确的匹配,我们知道我们已经找到了正确的组合,我们只是搜索它 但是,由于我们正在保存10^8=100000000个单独的输出,因此计算机上的空间不足 我们尝试使用ctrl+z暂停cURL过程,并检查文件,以查看是否命中了正确的组合。如果没有,我们将清除output.txt文件,保存它,然后使用fg%继续cURL过程 问题是,当我们恢复cURL时,在清除文本文件后,文件仍然为空:cURL的输出将不再保存到文件中 我想知道是否有一种方法可以暂停cURL以检查文件,清除文件,并在继续保存其余输出的同时恢复cURLBash 暂停卷曲以清除输出,然后继续,bash,macos,curl,Bash,Macos,Curl,我希望这不是离题。这是背景: 我的朋友和我正在尝试解决这个在线难题,你基本上必须输入16位数字的组合;如果错误,该网站将显示不正确的,如果正确,一些其他消息,我们不知道。我们有前八个数字,所以我们认为使用curl强制执行并保存到输出以进行检查是可行的 我们已经这样实施了: 卷曲http://www.game.com/checkCombo.php?num1=[0-9]&num2=[0-9]…&num8=[0-9]>>output.txt 如您所见,我们基本上正在运行所有可能的组合,并将每个单独的输
如果你对我们如何进行合并有其他想法,我也很乐意听到。谢谢。一个简化的案例将展示不同的入门内容。在没有卷曲的情况下开始测试,直到找到一个有效的解决方案。 我编写了一个FuntAction checkcombo,它需要3个参数,并且有一个隐藏的解决方案:
checkcombo () {
digit=$1$2$3
if [[ $digit = 412 ]]; then
echo "How did you find me?"
else
echo incorrect
fi
}
请尝试使用此函数
checkcombo 4 1 0
checkcombo 4 1 1
checkcombo 4 1 2
很好,现在我们想要暴力。也许最好的解决方案是一个循环,直到999,然后将每个数字拆分为3位数字,但我想显示嵌套的循环
for i in {0..9}; do
for i2 in {0..9}; do
for i3 in {0..9}; do
checkcombo $i $i2 $i3 | grep -q "incorrect" || { echo The answer is $i $i2 $i3 && break 3; }
done
done
done
带有checkcombo的行可能很难读取。这是一个简短的说法
if [ $(checkcombo $i $i2 $i3 | grep "incorrect" | wc -l) -eq 0 ]; then
echo "The answer is $i $i2 $i3"
# and stop testing with break 3
fi
使用8个嵌套循环测试旋度时,可以在其中一个子循环之后进行检查。但是,为什么不在每次组合后检查grep-q不正确| |中断?