Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://www.sao.ru/precise/Laboratory/Publications/2000/MIDAS/Lect_N2/node9.html
Дата изменения: Mon Jan 31 12:20:36 2000 Дата индексирования: Sat Sep 11 22:09:15 2010 Кодировка: koi8-r Поисковые слова: п п п п п п п п п |
С версии 94NOV в MIDAS начало работать перенаправление ввода-вывода. Это обозначает, что любая информация, выдаваемая на терминал программой, может быть перенаправлена в файл или подана на вход другой программе.
Например, если Вы хотите скопировать содержание MIDAS-таблицы в ASCII-файл,
надо выполнить две команды:
> ASSIGN/PRINT file mytable.dat -- назначение вывода в файл.
> PRINT/TABLE mytable -- вывод.
Используя возможность переназначения вывода,
можно теперь написать всего одну команду:
> WRITE/TABLE mytable >mytable.dat -- эквивалентна по результату двум
вышеописанным. Файл `mytable.dat' будет создан в текущей директории.
> WRITE/TABLE mytable >>mytable.dat -- дописать в уже существующий файл.
ВНИМАНИЕ :Между перенаправлением ввода-вывода для UNIX и MIDAS существует разница. Если shell в UNIX строку типа cat file > aaaa поймет правильно при любом количестве пробелов (например, cat file>aaaa), то в MIDAS Вы ДОЛЖНЫ писать знаки ">" "<" всегда после пробела, а имя файла пробелом не отделять.
Если Вы хотите записать данные в файл и одновременно вывести на терминал,
то это делается вот так:
> WRITE/TABLE mytable >mytable.dat+terminal
Если Вы не хотите вывода на терминал вообще, то существует специальная
форма перенаправления вывода для этого случая (нуль-устройство):
> WRITE/TABLE mytable >Null
Ввод данных со стандартного входа имеет гораздо меньше приложений
и туманен для MIDAS, с моей точки зрения (скажем, я до сих пор не понимаю,
какой параметр при этом работает, ведь в MIDAS-процедуре их может быть 8).
Однако вот, например, полезное ему применение:
$ls a*.bdf >mydata.dat -- запись всех имен изображений, начинающихся
с "a", в файл.
> READ/DESCR <mydata.dat -- чтение из этого файла имен и выдача
содержания стандартных дескрипторов на терминал. Например, то же действие
при помощи стандартных MIDAS-команд выглядит вот так:
> CREATE/ICAT OBJ a*.bdf -- создание каталога изображений;
> EXECUTE/COMMAND READ/DESCR OBJ.cat -- выдача стандартных
дескрипторов для всех изображений из каталога.
И последний шик для ввода-вывода это, конечно же, использование программного канала ("трубы" на UNIX жаргоне). Это обозначает, что вывод MIDAS-программы можно перенаправить на вход UNIX-программе. И наоборот.
Пример : |
> READ/DESCRIPTOR mama | $grep CUNIT -- выдача содержания стандартных дескрипторов изображения mama.bdf и поиск среди них содержания нужного дескриптора CUNIT. |
> $pwd | WRITE/KEYWORD INPUTC -- запись имени текущей директории, в которой ведется обработка, в переменную INPUTC. |
Замечание :Замечу, что при использовании программного канала между несколькими UNIX-командами знак $ ставится только один раз -- в начале. Таким образом, команда > $ls | $grep it -- неправильная, а команда > $ls | grep it -- правильная.