2013-04-10 97 views
0

这个KornShell(ksh)脚本应该做什么是检查我的dmesg中的磁盘,内部和外部。在dmesg输出上,内部驱动器显示为wd [0-9],外部显示为sd [0-9]。我当然没有这么多的磁盘,但我希望我的脚本尽可能多地覆盖可能性。设备0-9将被检查。所以这是这个想法:检查文件中是否存在字符串(ksh)

创建两个大小为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; 
} 

当然,外部人员也应该遵循相同的过程。

回答

0

我认为有以下应该让你去,不能完全确定你希望你的阵列设置,但这里什么样的价值观云:

#!/bin/ksh 

set -A internal 

for i in {0..9} 
do 
    echo "Looking for wd"$i 
    internal[$i]=`dmesg | grep "^wd$i" | head -n 1 | cut -d\ -f1` 
    if [[ ${internal[$i]} = "wd"$i ]];then 
    internal[$i]=1 
    else 
    internal[$i]=0 
    fi 
done 
+0

几乎我需要什么,我就改成我的需求。谢谢。 :) – saliarosaurus 2013-04-10 20:15:26

相关问题