我正在尝试编写一个 bash 脚本,检查我的硬盘驱动器恰好与哪个 sda/sdb/sdc 相关联,并根据哪一个来安装我的硬盘驱动器。
if (( `sudo fdisk -l | grep /dev/sdc | grep "1.8 TiB"` ))
then
echo sdc1 with 2TiB found.
sudo mount /dev/sdc1 /mnt/2tbOrange/
fi
我收到以下“除以 0”错误,但我不知道原因。
((: Disk /dev/sdc: 1.8 TiB, 2000365289472 bytes, 3906963456 sectors : division by 0 (error token is "dev/sdc: 1.8 TiB, 2000365289472 bytes, 3906963456 sectors ")
答案1
出现此错误的原因是双括号((...))
用于算术,因此斜线表示除法。有关更多详细信息,请参阅Bash 运算符 [[ 与 [ 与 ( 与 (( 之间有什么区别?在 Unix 和 Linux 上。
正如评论中所讨论的,您可以使用grep -q
。如果找到匹配项,则返回 true,否则返回 false。
if sudo fdisk -l | grep /dev/sdc | grep -q "1.8 TiB"; then ...
这就是说,这是一个XY问题。您编写的代码没有按照您描述的方式执行。从快速搜索来看,最好的解决方案似乎是分别使用mount -L
或mount -U
通过文件系统标签或 UUID 进行挂载。您不需要解析的输出fdisk -l
,也不需要 if 语句。如果您需要更多详细信息,请告诉我;您可能需要提出一个新问题。