The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"перенаправление вывода"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"перенаправление вывода"  
Сообщение от sickboy email(ok) on 01-Авг-07, 20:25 
Например,

if id fakename
then
...

Как сохранить вывод команды id fakename в переменной, что бы затем можно было вывести ошибку в stdout в нужно месте:
echo $ERROR

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "перенаправление вывода"  
Сообщение от anonymous (??) on 01-Авг-07, 23:05 
>Например,
>
>if id fakename
>then
>...
>
>Как сохранить вывод команды id fakename в переменной, что бы затем можно
>было вывести ошибку в stdout в нужно месте:
>echo $ERROR

Непонятна суть вопроса

TEST_VAR=$(id username)
echo $TEST_VAR

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "перенаправление вывода"  
Сообщение от sickboy email(ok) on 01-Авг-07, 23:35 
Вот допустим

USER=$1
echo -n "Проверка существования юзера: $USER ..."
if id $USER >/dev/null 2>&1
then
    echo " OK"
else
    echo " FAIL - $ERROR"
fi

где в $ERROR должна содержаться ошибка, которую выводит id

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "перенаправление вывода"  
Сообщение от jd (??) on 01-Авг-07, 23:59 
USER=$1
echo -n "Проверка существования юзера: $USER ..."
if ERROR=`id $USER 2>&1 >/dev/null`   # поменял только здесь
then
    echo " OK"
else
    echo " FAIL - $ERROR"
fi

А чтоб покрасивше ещё было, можно вместо последнего echo сделать:
    echo -n " FAIL - "
    echo $ERROR | cut -f2- -d' '

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "перенаправление вывода"  
Сообщение от sickboy email(ok) on 07-Авг-07, 18:13 
>if ERROR=`id $USER 2>&1 >/dev/null`   # поменял только здесь

Эх, то, да не совсем.
гут:
$ ERROR=`id -u fakeuser 2>&1 >/dev/null`
$ echo $ERROR
id: fakeuser: no such user

не гут:
$ ERROR=`id -u trueuser 2>&1 >/dev/null`
$ echo $ERROR

пусто.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "перенаправление вывода"  
Сообщение от sickboy email(ok) on 07-Авг-07, 18:17 
>[оверквотинг удален]
>гут:
>$ ERROR=`id -u fakeuser 2>&1 >/dev/null`
>$ echo $ERROR
>id: fakeuser: no such user
>
>не гут:
>$ ERROR=`id -u trueuser 2>&1 >/dev/null`
>$ echo $ERROR
>
>пусто.

млин, /dev/null надо убрать.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "перенаправление вывода"  
Сообщение от google.com on 12-Авг-07, 20:11 
>млин, /dev/null надо убрать.

if ! err=$(id -u invalidUser 2>&1 >&-); then
        echo $err
fi

Однако не все программы разрешают закрывать дескриптор. awk(1), например, ругается. :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "перенаправление вывода"  
Сообщение от google.com on 18-Авг-07, 07:42 
>if ! err=$(id -u invalidUser 2>&1 >&-); then
>        echo $err
>fi

Нафиг if {} fi. Элегантнее так:
! err=$(id -u invalidUser 2>&1 >&-) && echo $err

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "перенаправление вывода"  
Сообщение от google.com on 18-Авг-07, 07:45 
>! err=$(id -u invalidUser 2>&1 >&-) && echo $err

Ну или так (без восклицательного знака вначале):
err=$(id -u root 2>&1 >&-) || echo $err

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру