2013-04-10 5 views
0

Что должен сделать скрипт KornShell (ksh) - это проверить мой dmesg для дисков, внутренних и внешних файлов. На выходе dmesg внутренние диски отображаются как wd [0-9], а внешние - sd [0-9]. У меня, конечно, не так много дисков, но я хочу, чтобы мой сценарий охватывал как можно больше возможностей. Будут проверены устройства 0-9. Так вот в чем заключается идея:Проверка наличия строк в файле (ksh)

создать два массива размера 9, выполнить поиск по dmesg, если wd0 существует, если так сделать первый элемент внутренних элементов 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

Смежные вопросы