powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, написать shell-процедуру
20 сообщений из 20, страница 1 из 1
Помогите, пожалуйста, написать shell-процедуру
    #33743029
Njuta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задание заключается в следующем:

Написать shell-процедуру, которая выполняет действия:
- вводит символьную строку, содержащую маршрутное имя некоторого файла;
- проверяет введенное маршрутное имя, если оно начинается с символа /, на совпадение его первой части с маршрутным именем домашнего каталога пользователя;
- если введенное маршрутное имя содержит маршрутное имя домашнего каталога или является относительным, то проверяет существование указанного первым параметром файла, в противном случае выводит на экран сообщение об ошибке;
- если файл существует, то выводит на экран его содержимое в обратном порядке;
- если файл не существует, то создает его и записывает в него строку, передаваемую в качестве параметра, в обратном порядке.
...
Рейтинг: 0 / 0
Помогите, пожалуйста, написать shell-процедуру
    #33743445
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
домашнее задание что ли? Бессмысслица какая-то

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
#!/bin/sh

filename=$ 1 
paramstr=$ 2 
flag= 0 

read path

echo $path | grep -v '^\/' >/dev/null &&
{
flag= 1 
} ||
{
expr $path : "^$HOME" >/dev/null  && flag= 1 
}

[ "$flag" -eq  1  ] && {
 if [ -f "$filename" ] ;then
  cat $filename | rev
 else
  echo $paramstr | rev > $filename
 fi
} ||
echo "error"
...
Рейтинг: 0 / 0
Помогите, пожалуйста, написать shell-процедуру
    #33746170
Njuta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо огромное :)
это лабораторка такая
а насчет бессмыслицы, это точно, я 2 недели пыталась эту процедуру написать
...
Рейтинг: 0 / 0
Помогите, пожалуйста, написать shell-процедуру
    #33748759
Njuta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
она в любом случае выводит "error" :(
...
Рейтинг: 0 / 0
Помогите, пожалуйста, написать shell-процедуру
    #33748777
Njuta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
она в любом случае выводит "error" :(
...
Рейтинг: 0 / 0
Помогите, пожалуйста, написать shell-процедуру
    #33748829
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
странно, я конечно быстро ее писал, но проверил.

Как запускаем?

./lab.sh filename string_to_reverse


потом вводится путь
...
Рейтинг: 0 / 0
Помогите, пожалуйста, написать shell-процедуру
    #33748949
Njuta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я запускаю
sh <имя процедуры>

а теперь еще и ошибки выдаются в:
{expr $path : "^$HOME" >/dev/null && flag=1
}

а именно: команда '{expr' не найдена и синтаксическая ошибка возле '}'
...
Рейтинг: 0 / 0
Помогите, пожалуйста, написать shell-процедуру
    #33749018
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
конечно. ведь надо аккуратно

{
expr $path : "^$HOME" >/dev/null && flag=1
}

а Вы убрали перевод строки. Получился какой-то {expr и конечно такой команды нету.
...
Рейтинг: 0 / 0
Помогите, пожалуйста, написать shell-процедуру
    #33749063
Njuta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
точно, я не заметила

только теперь проблема в следующем:
я ввожу имя домашнего каталога, а выводится:

"expr: предупреждение: непереносимое BRE: `^HOME`: использование `^` как первого символа BRE (базового регулярного выражения) напереносимо; этот символ будет игнорирован
error"
...
Рейтинг: 0 / 0
Помогите, пожалуйста, написать shell-процедуру
    #33749225
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
будет игнорирован - ничего страшного. Но если не нравится предупреждение- можно убрать символ ^ просто.
По-моему expr ищет все равно от начала.

а вот то что выводится error странно.
А если не имя дом каталога вводить а относительный пуить - просто строку, не начинающуюся с /

т.е. как в условии описано
...
Рейтинг: 0 / 0
Помогите, пожалуйста, написать shell-процедуру
    #33749239
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну или можно строчку

expr $path : "^$HOME" >/dev/null && flag=1

заменить на

echo $path | grep "^$HOME" > /dev/null && flag=1

если там expr такой капризный. Это одно и то же.
...
Рейтинг: 0 / 0
Помогите, пожалуйста, написать shell-процедуру
    #33749254
Njuta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тогда в строке

echo $paramstr | rev > $filename

выводится сообщение "ambiguous redirect", а в конце опять же error
...
Рейтинг: 0 / 0
Помогите, пожалуйста, написать shell-процедуру
    #33749406
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такое сообщение появится если имя файла пустое.

вообще конечно надо было проверку сделать.

а случидлсь это из-за того что видимо Вы без параметров запустили видимо

по условию нужны 2 параметра
...
Рейтинг: 0 / 0
Помогите, пожалуйста, написать shell-процедуру
    #33749426
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно в самое начало скрипта вставить такой код, проверяющий число параметров

Код: plaintext
1.
2.
3.
4.
5.
[ $# -eq  2  ] || {
echo 'invalid param number'
exit  1 
}

...
Рейтинг: 0 / 0
Помогите, пожалуйста, написать shell-процедуру
    #33750201
Njuta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я наверное чего-то не понимаю с этими параметрами...
получается, что в любом случае выводится собщение 'invalid param number'
...
Рейтинг: 0 / 0
Помогите, пожалуйста, написать shell-процедуру
    #33750269
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
начинаем все сначала :-)

Вот наш скрипт

cat lab1.sh

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
#!/bin/sh

[ "$#" -eq  2  ] || {
echo 'invalid param number'
exit  1 
}


filename=$ 1 
paramstr=$ 2 
flag= 0 

read path

echo $path | grep -v '^\/' >/dev/null &&
{
flag= 1 
} ||
{
echo $path | grep "^$HOME" > /dev/null && flag= 1 
}

[ "$flag" -eq  1  ] && {
 if [ -f "$filename" ] ;then
  cat $filename | rev
 else
  echo $paramstr | rev > $filename
 fi
} ||
echo "error"

продолжим - сделаем исполняемым и повызываем с двумя параметрами:

-bash-2.05b$ chmod 755 lab1.sh

-bash-2.05b$ ./lab1.sh dedede
invalid param number

-bash-2.05b$ ./lab1.sh dedede fohha
hello

-bash-2.05b$ ./lab1.sh dedede2 fohha2
/d/fffd
error

-bash-2.05b$ ./lab1.sh dedede3 fohha3
/home/username/ddd

-bash-2.05b$ ls
dedede dedede3 lab1.sh


все отлично.
...
Рейтинг: 0 / 0
Помогите, пожалуйста, написать shell-процедуру
    #33750365
Njuta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
действительно все отлично :)
только я не совсем поняла одну вещь:

я ввожу 2 параметра, как у Вас написано, а затем на следующей строке маршрутное имя;
когда я просматриваю содержимое файла, указанного 1-ым параметром, выводится 2-ой параметр в обратном порядке

а маршрутное имя не должно выводится?
...
Рейтинг: 0 / 0
Помогите, пожалуйста, написать shell-процедуру
    #33750435
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не должно, потому что в Вашем задании ничего про это не написано.

- если файл существует, то выводит на экран его содержимое в обратном порядке;
- если файл не существует, то создает его и записывает в него строку, передаваемую в качестве параметра, в обратном порядке.
...
Рейтинг: 0 / 0
Помогите, пожалуйста, написать shell-процедуру
    #33750930
Njuta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
понятно
спасибо большое за помощь
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Помогите, пожалуйста, написать shell-процедуру
    #36004608
CrazyGooD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написать shell - процедуру, которая выполняет действия:
в заданном первым параметром каталоге находит все простые файлы, число ссылок на которые максимально, и удаляет их;
удаляет все пустые каталоги;
выдает на экран сообщения о каждом удаленном файле и каталоге.
Вариант 20
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, написать shell-процедуру
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]