我正在尝试使用 bash 脚本确定磁盘是 SSD 还是 HDD。
logical_name="/dev/sda"
type=""
disk=$(basename $logical_name)
x=`cat $filename | grep "${disk}" | awk '{print $2}'`
if [ ! -z "$x" ]
then
if [ "$x" = "0" ]
then
type="SSD"
fi
if [ "$x" = "1" ]
then
type="HDD"
fi
fi
echo $type
x 的值是正确的,0 或 1。但经过比较后,它没有为变量 type
分配任何值。它打印为空。谁能指出我在这里做错了什么?
更多信息:
$filename 是一个包含 sudo lsblk -d -o name,rota
NAME ROTA
sda 1
sdd 1
sdc 0
最佳答案
虽然我没有发现发布的代码有任何问题,但以下是一个更简化且可维护的版本,可以执行相同的操作。
DISK_NAMES=(SSD HDD) # names are resolved by index
filename="in1.txt"
logical_name="/dev/sda"
disk="$(basename $logical_name)"
x="$(sed -n 's/'$disk' *\([0-9]*\)/\1/p' $filename)"
# check if $x is empty here, if required
echo "$x -> ${DISK_NAMES[$x]}"
关于linux - bash 中的变量比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55739150/