【发布时间】:2019-12-10 12:36:03
【问题描述】:
我正在尝试实现一行代码,以防止用户擦除主机闪存驱动器(实际上是 110 GB 以下的任何内容)
#!/bin/bash
RED='\033[0;31m'
NC='\033[0m'
END='\033[0m'
FLASH='\e[5m'
dt=`date '+%m/%d/%Y_%H:%M:%S'`
echo -e "STILL BE CAREFUL!! SIZE CHECK IS STILL NON-FUNCTIONAL"
echo "Inspect the drive for multiple boot/storage/recovery partitions. Check out the README.odt for reference photos."
sudo gnome-disks
echo "Showing list of drives: "
sudo fdisk -l | grep -i "Disk /"
echo "What drive are you attempting to wipe? Do not include /dev/"
read drive
size= sudo fdisk -l | grep -i "Disk /dev/$drive" | awk -F" " {'print $3'}
printf %.0f $size
if (( $size <= 110 ))
then
echo -e "$size"
echo -e "${RED}${FLASH}Error: You are trying to wipe a disk that is less than 110 GB. There's a high chance this is the host flashdrive. If you are sure this is the correct drive use\n ${END}${RED}sudo dd if=/dev/urandom of=/dev/<drive here> bs=1M status=progress${NC}"
else
echo -e "${RED}Now wiping drive /dev/$drive!${END}"
sudo dd if=/dev/urandom of=/dev/$drive bs=1M status=progress
echo -e "${RED}${FLASH}Wiping has completed at $dt !!!${END}"
echo "Drive in question should only have one main partition. See README.odt for reference."
sudo gnome-disks
fi
echo "Please enter Ctrl + C to exit!"
sleep 10000
如果我尝试擦除 8.7 GB 的 sda,我希望它会抛出我创建的错误。相反,它表示预期的操作数错误,然后继续擦除测试闪存驱动器。
【问题讨论】:
-
这显然是错误的
size= sudo fdisk -l | grep -i "Disk /dev/$drive" | awk -F" " {'print $3'},它完全跳出来了... -
顺便说一句,如果您使用颜色代码更改变量以具有 文字代码,而不是生成它们的反斜杠转义序列,您将能够停止使用
-e参数到echo。 f/e,red=$'\033[0;31m';$''让 shell 在解析时处理反斜杠转义序列,而不是等待echo稍后再做。
标签: linux bash scripting linux-mint