Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/34: Рейтинг темы: голосов - 34, средняя оценка - 4.59
1 / 1 / 1
Регистрация: 04.11.2014
Сообщений: 97

Вывод сообщений об ошибках (stderr)

14.09.2015, 21:43. Показов 6558. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, возник вопрос при выполнении задания. Каким образом можно вывести сообщение об ошибке? Текст задания представлен ниже.

Написать скрипт с использованием цикла for, выводящий на консоль размеры и права доступа для всех файлов в заданном каталоге и всех его подкаталогах (имя каталога задается пользователем в качестве первого аргумента командной строки). Проверить работу программы для каталога/usr.

Вывод сообщений об ошибках должен производиться в стандартный поток вывода сообщений об ошибках (stderr) в следующем виде:
имя_модуля: текст_сообщения.
Пример:
./1.exe :erroropenfile: 1.txt
имя модуля, имя файла берутся из аргументов командной строки

Добавлено через 3 минуты
Bash
1
2
3
4
5
6
7
8
#!/bin/bash
for i in $(find "$1" - type f)
do
    ls -lh "$i" | awk '{print $1, $5, $9}'
    if [-rname_file]
    then -exec printf "./lab1.sh: error open file: "; -exec basename {}; 
    fi
done
В 4 строке выводится информация о файлах. Но вывести информацию об ошибках не получается (строки 5-7). Помогите пожалуйста.
Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.09.2015, 21:43
Ответы с готовыми решениями:

Вывод сообщений об ошибках при запуске софта ч/з ярлык
Всем привет! Debian 7. Установил программу PyCharm 3.4.1. Создал символическую ссылку: sudo ln -s...

Сохранение введенных пользователем данных и вывод сообщений об ошибках
Разрабатываю страницу регистрации. Использую паттерн MVC. На странице висит форма засылаемая постом на сервер, запрос переадресовывается...

Оповещение о правилах заполнения формы, вывод сообщений об ошибках
Братцы, наставьте на путь истинный. Есть форма авторизации. Хочется, чтобы при получении фокуса полем сбоку справа ( не внизу-наверху...

8
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
14.09.2015, 22:08
Bash
4
5
6
7
8
9
    if [ -r "$i" ]
    then  
        ls -lh "$i" | awk '{print $1, $5, $9}'
    else
        printf "%s: error open file: %s\n" "$0" "$(basename "$i") >/dev/stderr
    fi
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
14.09.2015, 22:57
Marinero. Отсутствуют парные кавычки в третьем параметре printf
0
1 / 1 / 1
Регистрация: 04.11.2014
Сообщений: 97
18.09.2015, 00:06  [ТС]
Здравствуйте.
При запуске скрипта выводится ошибка, но не выводятся права доступа.
Например:
./lab1.sh: строка 4: [-r: команда не найдена
./lab1.sh: error open file: home
И так выводится информация о всех файлах.
Bash
1
2
3
4
5
6
7
8
9
10
#!/bin/bash
for i in $(find "$1" - type f)
do
    if [ -r "$i" ]
        then  
            ls -lh "$i" | awk '{print $1, $5, $9}'
        else
            printf "%s: error open file: %s\n" "$0" "$(basename "$i") >/dev/stderr
    fi
done
Подскажите пожалуйста, где ошибка?
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
18.09.2015, 09:23
Если ошибка
Цитата Сообщение от sky_diver89 Посмотреть сообщение
./lab1.sh: строка 4: [-r:
то в оригнальном скрипте отсутствует пробел между [ и -r. И наоборот, в find "$1" - type f пробела между - и type быть не должно.
Bash
1
2
3
4
5
6
7
8
9
10
#!/bin/bash
while read -r i
do
    if [ -r "$i" ]
        then  
            ls -lh "$i" | awk '{print $1, $5, $9}'
        else
            printf "%s: error open file: %s\n" "$0" "$(basename "$i")" >/dev/stderr
    fi
done < <(find "$1" -type f)
1
1 / 1 / 1
Регистрация: 04.11.2014
Сообщений: 97
19.09.2015, 13:57  [ТС]
Marinero, Спасибо большое. Какую книгу лучше прочитать по интерпретатору BASH?
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
19.09.2015, 15:09
Advanced BASH scripting guide
1
1 / 1 / 1
Регистрация: 04.11.2014
Сообщений: 97
20.09.2015, 22:19  [ТС]
Добрый вечер, что обозначает -lh в строке?
Bash
1
ls -lh "$i" | awk '{print $1, $5, $9}'
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
21.09.2015, 13:08
А man ls посмотреть самому не?
Цитата Сообщение от ls --help
HTML5
1
2
-h, --human-readable   c -l, печатать размеры в удобном для человека виде (например, 1K 234M 2G)
-l                     использовать широкий формат
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.09.2015, 13:08
Помогаю со студенческими работами здесь

Как сделать проверку входных аргументов и вывод сообщений об ошибках?
Доброго времени суток форумчане!!! У меня усть некая формула а вот как ее реализовать правильно задача для меня) Допустим x=a+b нужно...

Кодировка сообщений об ошибках
Может это в FAQ, но искать особо времени нет. Ошибки IIS 5.0 выводит вот таким макаром: ...

Несколько сообщений об ошибках в if
Здравствуйте.. Есть 5 условий на проверку число ли это if(!is_numeric($_POST)) { echo ' &lt;p&gt;Неверные данные в 1...

Отключение сообщений об ошибках
Как отключить сообщение: Прекращена работа программы.Возникшая проблема привела к прекращению работы программы. ?

Переопределение сообщений об ошибках
В MVC 5 есть UserValidator, в котором есть проверка уникальности мыла: RequireUniqueEmail. Как мне переопределить сообщение об ошибке, если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru