首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DD脚本和操作数预期err r

DD脚本和操作数预期err r
EN

Stack Overflow用户
提问于 2019-08-01 21:12:05
回答 1查看 182关注 0票数 0

我正在尝试实现一行代码,以防止用户擦除主机闪存盘(任何低于110 GB的内容)。

代码语言:javascript
复制
#!/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

如果我尝试擦除sda,即8.7GB,我希望它会抛出我创建的错误。相反,它说,预期操作数错误,然后继续擦除测试闪存盘无论如何。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-01 22:21:55

变量size总是等于零(实际上对几乎整个脚本都没有设置)。我想你的意思是在分配中的等号后立即加一个反号,在行尾再加上一个。但绝对不要用后排。这就是其中的一个例子。它们很容易被忽略或误读为单引号,而且它们很难嵌套,等等。

该行表示“将size的值设置为null,并只将其传递到sudo环境中”。

由于size未设置,您将得到if语句的“操作数预期”错误,printf也输出"0“。

将这一行改为:

代码语言:javascript
复制
size=$(sudo fdisk -l | awk -F " " -v drive=$drive 'BEGIN {IGNORECASE = 1} $0 ~ "/Disk /dev/" drive {print $3}')

注意,我还将单引号移到它们在AWK命令中的正确位置,并将grep函数移动到AWK命令中。

以下是其他几行更正后的行:

代码语言:javascript
复制
dt=$(date '+%m/%d/%Y_%H:%M:%S')
printf '%.0f\n' "$size"

您可以省略双括号内的美元符号:

代码语言:javascript
复制
if (( size <= 110 ))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57317050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档