Справка со сценарием удара с текстом

Я являюсь новым в сценариях удара и нуждаюсь в помощи со следующим:

Цель этой домашней работы состоит в том, чтобы позволить студентам записать программы в языке сценариев удара, которые позволяют им управлять данными в текстовом файле так же к таблице базы данных..

Студенты должны понять структуру таблицы и записать программы check_table, row_select и row_delete с помощью языка сценариев удара.

Структура таблицы таблица состоит из текстового файла, который содержит строки. Первая строка содержит информацию о таблице, и каждая остальная часть строк представляет строку данных.

Первая структура строки следующие:

table_name:number_of_rows:number_of_fields:fieldname1,fieldname2,filedname3 ...etc
  • table_name является алфавитно-цифровой строкой, не превышающей 16 символов, и не включает символ столбца ‘:’ ни пробел ‘‘. Это должно совпасть с именем файла.
  • number_of_rows является целым числом со значением меньше чем 1 000.
  • number_of_fields является целым числом со значением меньше чем 10.
  • имя поля является алфавитно-цифровой строкой, не превышающей 16 символов и не включая пространство, ‘‘ни запятую‘’, символы.

Каждая строка данных состоит из серии полей, разграниченных символом запятой’’. Каждая строка имеет точно то же количество полей как все другие поля в таблице. Поле состоит из строки алфавитно-цифровых символов, не превышает 16 символов и не содержит пробел, ‘‘ни символ запятой‘’.

Пример:

students_info:3:5:std_1st_name,std_last_name,year_ of_birth,sex,program
amer,salim,1990,m,bit
samira,rami,1988,f,ise
lamia,rida,1990,f,ise

Программы

1.check_table

syntax: check_table <table_name>

Описание:

Программа проверяет следующее в порядок:

  • синтаксис команды
  • таблица существует.
  • первый синтаксис строки правилен.
  • имя таблицы и имена полей у всех есть корректные длины.
  • Таблица имеет корректное количество строк.
  • Все строки имеют корректное количество полей.

Вывод:

  • таблица хороша
  • таблица имеет проблемное описание проблемы (первая проблема, с которой встречаются)

пример:

$ check_table students_info
table students_info is good
$ check_table student_info1
table students_info has at least one problem:
Actual number of rows not equal to the one in the file header.

Мне нужно некоторое руководство об этом.

Заранее спасибо.

-3
задан 28 June 2012 в 17:12

2 ответа

Только, чтобы помочь Вам начать, сохраните это в файле и установите выполнить режим, затем выполняет его в терминале. Посмотрите на вывод и сравните его со сценарием. Посмотрите, можно ли понять, как это имеет отношение. Используйте ссылку, которым уже предложили помочь.

#!/bin/bash

if [[ $# != 1 ]]
then
    echo usage $0 "<table_to_check>"
    exit 1
fi

error=""
firstline=1
{
    while read line # loop through the lines
    do
    # check syntax of "line"
        if(($firstline))
        then
        #check first line syntax
            echo information row=$line # debug

            # ... your method here. Assign to error if something is wrong...

            firstline=0 # ready for next line/loop which should be data
        else
        #check other lines
            echo data row=$line # debug

            # ... your method here. Assign to error if something is wrong...

        fi


        if [[ $error != "" ]] # assign any error in the data as a string message you can then print here and exit
        then
            echo $error 
            exit 2
        fi
    done
} < "$1"

exit 0 # no error

Для реализации полевых проверок, возможно, смотрят на cut разбивать строку в отдельные маркеры, например, в информационной строке:

number_of_rows=`echo $line | cut -d':' -f2`

и, учитывая образец, $number_of_rows должен содержать "3"

Таким образом для проверки это правильно, что Вы могли использовать счетчик, который увеличен на каждом цикле:

rowcount=$[rowcount+1]

То, когда больше нет $rowcount данных, должно равняться $number_of_rows так:

    if (( $rowcount != $number_of_rows ))
    then
        error="number of rows doesn't agree"
        # ... etc ...

Что-то как этот.

Другие методы доступны, конечно,

-1
ответ дан 28 June 2012 в 17:12

Вы должны, по крайней мере, начать с изучения основ bash. Я рекомендую прочитать http://mywiki.wooledge.org/BashGuide .

После прочтения руководства вы захотите разобрать текстовый файл построчно и / или поле за полем, что объясняет Bash FAQ 1 . ]

Вам также нужно будет выполнить некоторые манипуляции со строками. Часто задаваемые вопросы по Bash 100 должны охватывать это.

0
ответ дан 28 June 2012 в 17:12

Другие вопросы по тегам:

Похожие вопросы: