#Арифметические операции

set a = …; set c = …;

@ b = $a + $c

echo "$b" `#b` ${b}10

@ b -= $a

echo $b

@ c = $b * $a - 1

echo $c

@ d = ( $c + 2 ) / $b

echo $d

@ c %= $b

echo $c

#Поразрядные логические операции

@ a = ( $c | ( $b + 4 ) )

echo $a

@ b = ( $a & $b )

echo $b

@ c = ( $a ^ $c )

echo $c

@ f = ( $a << 3 )

echo $f

@ f = ( $c >> 1 )

echo $f

#Логические операции и операции отношения

@ a = ( ( $b >= $c ) && ( $d <= $f) )

@ b = ( ( $c!= $a) || ( != b ) )

#Подстановка вывода команды

set f = (`date`)

echo $f

4. Содержание отчета

Краткое описание каждой исследуемой операции и команды C-shell, результаты действий с переменными.

5. Контрольные вопросы

5.1. Назначение внутренних переменных и способы изменения их значений.

5.2. Что такое стандартный ввод и вывод, способы их переназначения.

5.3. Операции в языке C-shell.

5.4. Управление последовательностью выполнения команд в языке C-shell.

5.5. Передача параметров в командные файлы и процедуры.

5.6. Область действия переменных.

5.7. Операторы цикла, условный оператор и оператор выбора.

5.8. Внешние переменные C-shell.

5.9. Переменные окружения: создание, время жизни и область действия.

5.10. Управление процессами в csh.

5.11. Перенаправление ввода, вывода и вывода ошибок в bourne shell.

5.12. Передача на терминал управляющих символов в shell и C-shell.

5.13. Ввод с терминала в командном файле. Приведите пример для sh и csh.

Лабораторная работа N5

НЕ нашли? Не то? Что вы ищете?

Изучение командного языка C-shell

1. Цель работы

Cоздание файлов настройки и освоение программирования в среде

C-shell.

2. Основные положения

При входе пользователя в систему интерпретатор считывает и

выполняет файлы. cshrc и. login, а при завершении работы - файл

.logout. Если в регистрационном каталоге есть файл. history, то

из него считывается протокол предыдущих сеансов.

Командные файлы на языке C-shell обычно начинаются со

строки #/bin/csh. Вообще, символ # в начале строки означает, что

строка содержит комментарий.

В интерпретаторе C-shell есть механизм назначения

альтернативных имен командам. С помощью команды 'alias' можно

задать список коротких псевдонимов для часто используемых команд.

Например:

alias a alias

a l ls - la

Для отмены псевдонима есть команда 'unalias'.

C-shell записывает в отдельный файл протокол сеанса работы

в виде списка пронумерованных командных строк.

Примеры повторного использования команд:

!n!* !n:l-m

!! !n:m!$

Синтаксис вызова csh:

csh [keys] [args]

Ключи:

-c команда с единственным параметром после - c

-e прекратить работу в случае неуспешного выполнения

любой команды

-f запретить выполнение файла. cshrc для быстрого старта

-i запустить оболочку в интерактивном режиме (по умолчанию при

вызове из командной строки)

-n осуществлять разбор, но не выполнять команды (отладка)

-s читать ввод команды из стандартного потока ввода

-t считывать и выполнять толбко одну строку. Для продолжения на

новой экранной строке используется символ '\'

-v после подстановок из истории печатать команду на экране

перед выполнением

-V перед разбором строк из. cshrc установить флаг - v, что

позволит видеть на экране выполнение командных строк

-x печатать на экран все команды перед выполнением

-X установить флаг - х при интерпретации файла. cshrc

Управляющие конструкции языка С-shell:

---Оператор цикла с перечислением---

foreach varname ( word_list )

command_list

end

Переменная varname принимает последовательно значения из

списка слов и для каждого из них выполняется тело цикла.

---Оператор цикла с условием---

while ( expression )

command_list

end

Пока выражение не равно нулю, выполняется список коианд.

В циклах foreach и while можно использовать команды break и

continue.

---Оператор выбора---

switch ( string )

case str1:

command_list_1

breaksw

. . .

case strN:

command_list_N

breaksw

[ default:

def_command_list

breaksw ]

endsw

---Условный оператор---

if ( expression ) then

command_list_1

[ else if ( expression2 ) then

command_list_2

else

command_list_3 ]

endif

Возможно любое количество пар else - if, а endif должен

всегда присутствовать один раз.

3. Порядок выполнения работы

3.1. Создать или модифицировать файлы. cshrc, .login и. logout в

своем регистрационном каталоге.

3.2. Разработать и отладить командный файл согласно заданному

варианту. Программы должны содержать диагностику ошибок

запуска и выполнения.

4. Варианты заданий

N1. Написать командный файл, который из заданного в командной

строке файла выбирает слова, начинающиеся с большой буквы и

записывает их в файл "Upper" в текущем каталоге, а все слова,

начинающиеся с маленьких букв - в файл "Lower", остальные слова

записываются в файл "Misc". Затем все файлы сортируются и

собираются в один - каждый исходный файл в отдельной колонке.

(Можно использовать команды grep, fgrep, sort и pr).

N2. Командный файл, который перемещает из текущего каталога все

файлы с заданными в командной строке расширениями в подкаталоги

текущего каталога с именем, совпадающим с расширением. Если такой

подкаталог отсутствует, его нужно создать. Если нет файлов,

соответствующих какому-либо расширению - выдать сообщение.

N3. Командный файл, который из заданных в командной строке

каталогов рекурсивно уничтожает все файлы с расширением ".o" и

файлы "a. out", запрашивая подтверждение, а файлы с расширением. c

переписывает в подкаталог заданного каталога с именем C_src. При

этом необходимо выдавать сообщения о перемещении по дереву

каталогов и о копировании файлов.

N4. Командный файл, в котором просматриваются все

подкаталоги текущего каталога и создаются два списка

каталогов. Если в просматриваемом подкаталоге число файлов

меньше 10, то список этих файлов со строкой-заголовком -

полным именем подкаталога, дописывают в файл "Littlelist" иначе -

в "Biglist".

N5. Командный файл, который все файлы из каталога /dev,

начинающиеся с символа "r" и являющиеся байториентироваными

помещает в файл "chardevice", а все файлы начинающиеся с "t" в

файл "ttydevice". Каждый файл снабжается заголовком и они

выводятся на экран одновременно, каждый в своей колонке (см.

команду "pr").

N6. Командный файл, который в каталоге, указанном первым

параметром в командной строке, выбирает файлы, владелец

которых указан как второй аргумент команды, и сортирует их

по ключу, указанному третьим параметром командной строки.

Выдавать диагностические сообщения в случае отсутствия каталога,

файлов в каталоге и неправильного использования ключа. (

Предлагается использовать команды sort, ls - l и переменные

типа массив слов).

<proga> <dir><owner><key>

#!/bin/csh

if ( $#argv < 3 ) then

echo "Not enough parameters!"

exit

endif

cd $argv[1] #current dir

set files=`ls - l` #get files

set owner=$argv[2]

set key=$argv[3]

if(!files) then

echo “cant find files in directory: $argv[1]”

exit

endif

echo >resfile. txt

foreach curfile($files)

set own=$curfile[3]

if(own==owner) then

echo curfile>>resfile. txt

endif

end

sort $key resfile. txt

cat resfile. txt

rm resfile. txt

echo “program end work”

N7. Командный файл, который все файлы текущего каталога собирает

в два файла: в первый файл с именем "myfile" все файлы,

владельцем которых является текущий пользователь (т. е. имя с

которым вошли в систему), а в другой файл (с именем "other") -

остальные файлы. Каждый файл снабдить заголовком и вывести

одновременно в две колонки (по одному файлу в колонке),

отсортированными по именам.

N8. Командный файл, который сортирует все файлы текущего

каталога по количеству строк и записывает их имена в файл

"sort_line", по количеству слов - в файл "sort_word" и по

количеству символов - в файл "sort_char". ( Рекомендуется

использовать команду wc и переменные типа массив слов ).

N9. Командный файл, который из каталога, указанного в командной

строке первым параметром (если такого каталога нет - выдача

диагностического сообщения) выбирает имена файлов, начинающиеся

либо с латинской буквы, либо с другого символа в зависимости от

ключа, указанного вторым параметром в командной строке (если

второго параметра нет - выдача диагностического сообщения),

сортирует их по времени создания и выдает их пронумерованный

список в файл "my_sort".

N10. Командный файл, который подсчитывает в каталогах, указанных

аргументом командной строки, общее количество файлов, общее

количество строк, слов и символов во всех файлах. Если

указанного каталога не существует - выдается диагностическое

сообщение.

N11. Командный файл, который в каталоге, указанном первым

аргументом командой строки, выбирает из всех файлов строки, в

которых есть слова, указанные в качестве шаблона вторым

аргументом ком. строки. Выдавать диагностическое сообщение, если

нет заданного шаблона или нет каталога; выводить имена файлов, в

которых есть искомые слова.

N12. Командный файл, который в текущем коталоге оставляет только

файлы созданные пользователем, работающим сейчас в системе

($user), остальные помещает в подкаталог текущего с именем

"other" ( если файлов нет - диагностическое сообщение, если

подкаталог не создан - создать и вывести диагностику ). Затем

вывести полный список текущего каталога и подкаталога "other".

5. Содержание отчета

Содержимое файлов. login, .cshrc и. logout и текст командного файла.

6. Контрольные вопросы

6.1. Операторы цикла в C-shell.

6.2. Условный оператор и оператор выбора.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5