Bash: 查找某个分区所在的磁盘并将结果放入变量

Bash: Find the disk a certain partition is on and put result into a variable

有哪些(可靠的)测试可以找到某个分区所在的磁盘并将结果放入变量?

例如lsblk的输出:

...
sda           8:0    0   9.1T  0 disk
└─sda1        8:1    0   9.1T  0 part /foopath
...
mmcblk0     179:0    0  29.7G  0 disk
├─mmcblk0p1 179:1    0   256M  0 part /barpath
└─mmcblk0p2 179:2    0  29.5G  0 part /foobarpath

如果 partition="/dev/mmcblk0p2",我如何将 mmcblk0 作为磁盘的一部分放入变量中?或者类似的,如果partition="/dev/sda1",如何将sda作为它所属的磁盘放入变量中?

disk=${partition::-1} 似乎是 hack,直到我遇到诸如 mmcblk0p1 之类的分区,因此请求更可靠的测试...

隔离磁盘并使用变量的目的是将其传递给smartctl -n standby /dev/sda以查找磁盘当前是否在旋转等

运行环境为LinuxMint 19.3和Ubuntu20.

有什么想法吗?

感谢@KamilCuk 和 @don_crissti ;)

“仅打印父设备”使用 lsblk

#!/bin/bash
partition="/dev/sda1"
disk="$(lsblk -no pkname "${partition}")"