Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 暂停卷曲以清除输出,然后继续_Bash_Macos_Curl - Fatal编程技术网

Bash 暂停卷曲以清除输出,然后继续

Bash 暂停卷曲以清除输出,然后继续,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 如您所见,我们基本上正在运行所有可能的组合,并将每个单独的输

我希望这不是离题。这是背景:

我的朋友和我正在尝试解决这个在线难题,你基本上必须输入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以检查文件,清除文件,并在继续保存其余输出的同时恢复cURL


如果你对我们如何进行合并有其他想法,我也很乐意听到。谢谢。

一个简化的案例将展示不同的入门内容。在没有卷曲的情况下开始测试,直到找到一个有效的解决方案。 我编写了一个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不正确| |中断?