Shell 检查文件中是否存在字符串(ksh)

Shell 检查文件中是否存在字符串(ksh),shell,unix,scripting,ksh,Shell,Unix,Scripting,Ksh,这个KornShell(ksh)脚本应该做的是在我的dmesg中检查磁盘、内部和外部。在dmesg输出上,内部驱动器显示为wd[0-9],外部驱动器显示为sd[0-9]。我当然没有这么多的磁盘,但我希望我的脚本能够涵盖尽可能多的可能性。将检查设备0-9。这就是我们的想法: 创建两个大小为9的数组,如果wd0存在,则通过dmesg进行搜索,如果存在,则将内部构件的第一个元素设置为1,如果wd1确实存在,则将数组的第二个元素设置为1或0 如果要搜索一个特定的磁盘,例如wd0,我可以执行以下操作: i

这个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中

(下面的代码不是ksh代码,而是用类似c的语法来表达想法):


for(i=0;i我认为以下内容应该可以让您继续,但不完全确定您希望将数组设置为什么值,但如下所示:

#!/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

几乎是我所需要的,我会根据我的需要来改变。谢谢。)
for (i=0;i<=8;i++){
    if (wd0) # that is if wd0 exists, if wd1 exists etc.
        internal[i] = 1;
    else
        internal[i] = 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