Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 0.doc
Скачиваний:
14
Добавлен:
01.05.2014
Размер:
97.79 Кб
Скачать

Возврат к shell

два способа временного выхода из редактора для ввода команд shell:sh и :!.

Команда :! позволяет выйти из редактора и запустить команду shell одной командной строкой. Сразу же после символа ! вводится команда shell.

Завершение работы с редактором vi

:wq-записать содержимое буфера vi в файл, который в данный момент редактируется и завершить работу с vi;

:q -записать временный буфер в новый файл filename и завершить работу с редактором vi;

:q! -завершить работу с редактором vi без записи содержимого буфера в файл; не учитываются все изменения, проведенные в буфере;

Задание.

1)Написать программу, выводящую приветствие и выполняющую элементарные действия, скомпилировать, запустить.

Текст:

#include<stdio.h>

int main()

{

int i=0;

printf(" i=%d \n",i);

scanf("%d",&i);

printf(" i=%d \n",i);

return i;

}

Компиляция:

$gcc t.c

Результат запуска:

$ a.out

i=0

5

i=5

$ a.out

i=0

9

i=9

$ a.out

i=0

y

i=0

2)Написать скрипт “калькулятор”

Текст:

echo "Hi!!!"

stop=0

while test $stop -eq 0

do

echo "input first operand,please:"

read op1

ch=0

while test $ch -eq 0

do

echo "input operation,please:"

read oper

case $oper in

"+")

ch=1

;;

"-")

ch=1

;;

"*")

ch=1

;;

"/")

ch=1

;;

"%")

ch=1

;;

*)

echo "illegal operation!!!try once more \n "

esac

done

echo "input second operand,please:"

read op2

# echo $op1$oper$op2

# ((res=op1operop2))

case $oper in

"+")

((res=op1+op2))

;;

"-")

((res=op1-op2))

;;

"*")

((res=op1*op2))

;;

"/")

((res=op1/op2))

;;

"%")

((res=op1%op2))

;;

esac

# echo $res

echo "Result:" $op1$oper$op2"="$res

echo "continue y/n?"

read answ

case $answ in

"n")

echo "Bye!!!"

stop=1

;;

"N")

echo "Bye!!!"

stop=1

;;

esac

done

Запуск скрипта на выполнение:

$ myscr.sh

Результат:

$ myscr.sh

Hi!!!

input first operand,please:

2

input operation,please:

o

illegal operation!!!try once more \n

input operation,please:

+

input second operand,please:

4

Result: 2+4=6

continue y/n?

y

input first operand,please:

8

input operation,please:

*

input second operand,please:

7

Result: 8*7=56

continue y/n?

n

Bye!!!

3) Написать программу, которая способна вызывать команды интерпретатора, передаваемые через командную строку, при отсутствии параметров выводит приветствие, сообщение об отсутствии параметров и прощается с пользователем, кроме того в качестве параметра(ов) могут выступать исполняемые файлы и скрипты (результат выполнения программы- их запуск).

Текст:

#include<stdio.h>

#include<unistd.h>

int main(int number,char* arguments[])

{

printf("Hi!!!\n");

if(number==1)//0

{ printf("No argumets!\n Bye!!!\n");

}

else{int i;

for( i=1;i<number;i++)

{

printf("Argument #%d : %s\n",i,arguments[i]);

printf("Result:\n");

system(arguments[i]);

}

printf("Bye!!!\n");

}

return 0;

}

компиляция:

$gcc main.c -o main

Результат запуска:

$ main.out

Hi!!!

No argumets!

Bye!!!

$ main.out pwd ls

Hi!!!

Argument #1 : pwd

Result:

/mnt/floppy

Argument #2 : ls

Result:

a.out main main.out myscr.sh myscr_last.sh sub try

fonareva main.c myscr myscr.sh~ set t.c

Bye!!!

$ main.out a.out

Hi!!!

Argument #1 : a.out

Result:

i=0

9

i=9

Bye!!!

$ main.out myscr.sh

Hi!!!

Argument #1 : myscr.sh

Result:

Hi!!!

input first operand,please:

4

input operation,please:

*

input second operand,please:

10

Result: 4*10=40

continue y/n?

y

input first operand,please:

6

input operation,please:

%

input second operand,please:

5

Result: 6%5=1

continue y/n?

n

Bye!!!

Bye!!!

Программа обращается к интерпретатору c помощью функции system() стандартной библиотеки языка С.

Вывод

В ходе данной работы были получены навыки работы в экранном редакторе vi, опыт работы с операционной системой Unix в командной строке,были написаны,откомпилированы и запущенны небольшие программы на С,а также скрипт,получено представление о передаче команд и исполнении скрипта.

11