这个 KornShell (ksh) 脚本应该做的是在我的 dmesg 中检查磁盘、内部和外部。在 dmesg 输出中,内部驱动器显示为 wd[0-9],外部驱动器显示为 sd[0-9]。我当然没有那么多磁盘,但我希望我的脚本能够涵盖尽可能多的可能性。将检查设备 0-9。这就是这个想法:
创建两个大小为 9 的数组,如果 wd0 存在,则通过 dmesg 搜索,如果存在,则使内部的第一个元素为 1,如果 wd1 确实存在,则使数组的第二个元素为 1,否则为 0。
如果要搜索一个特定的磁盘,例如 wd0,我可以执行以下操作:
internal=`dmesg | grep "^wd0" | head -n 1 | cut -d\ -f1`
这使得
internal = wd0
但是如何以“循环”的方式检查字符串 wd0-wd9 是否存在于 dmesg 中
# create arrays
set -A internals 0 0 0 0 0 0 0 0 0
set -A externals 0 0 0 0 0 0 0 0 0
(下面的代码不是 ksh 代码,而是用类似 c 的语法呈现这个想法):
for (i=0;i<=8;i++){
if (wd0) # that is if wd0 exists, if wd1 exists etc.
internal[i] = 1;
else
internal[i] = 0;
}
当然,外部也应遵循相同的过程。