理论上,pentoo-installer 中的这个代码片段可以找到所选磁盘上的所有分区,但它找不到我的 sda1 分区,所以我很想理解它并进行修改,以便它能够找到它。
findpartitions() {
workdir="$PWD"
for devpath in $(finddisks); do
disk=$(echo $devpath | sed 's|.*/||')
cd /sys/block/$disk
for part in $disk*; do
# check if not already assembled to a raid device
if ! [ "$(cat /proc/mdstat 2>/dev/null | grep $part)" -o "$(fstype 2>/dev/null </dev/$part | grep "lvm2")" -o "$(sfdisk -c /dev/$disk $(echo $part | sed -e "s#$disk##g") 2>/dev/null | grep "5")" ]; then
if [ -d $part ]; then
echo "/dev/$part"
[ "$1" ] && echo $1
fi
fi
done
done
#[ ... more code ...]
cd "$workdir"
}
谢谢!!
答案1
你需要调试这个一点点。首先,添加 echo 命令来转储流程,并可选地在每个 for 循环和 if 语句之后转储变量。
你可以在打开调试的情况下运行命令? 这将为您提供几乎相同级别的细节,帮助您了解脚本流程实际上在做什么。此外,这篇关于 unix 的文章解释了如何从 bash 提供给我们的调试中获取行号。