The OpenNET Project / Index page

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

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

"Присвоение переменной результата выполнения скрипта"  
Сообщение от animator (??) on 27-Июл-07, 14:12 
Добрый день.
Купил и читаю книгу редерика Смита "Полный справочник по FreeBSD".
Глава - Написание сценариев.

Там пример :

   iface='ifconfig | grep flags | cut -f 1 -d ":"'
   iface='echo $iface  | cut -f 1 -d " "'
   echo "$iface"

по книге должен выдать что-то типа  rl0 - например.

а выдает

   echo $iface | cut -f 1 -d " "

Подскажите где ошибка?

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

 Оглавление

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


1. "кавычки"  
Сообщение от pasha (??) on 27-Июл-07, 14:25 
>Подскажите где ошибка?
>   iface='echo $iface  | cut -f 1 -d "

по видимому на до было  писать так iface=`echo $iface  | cut -f 1 -d `
обратная одиночная кавычка а не прямая.

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

2. "кавычки"  
Сообщение от animator (??) on 27-Июл-07, 15:01 
>>Подскажите где ошибка?
>>   iface='echo $iface  | cut -f 1 -d "
>
>по видимому на до было  писать так iface=`echo $iface  |
>cut -f 1 -d `
>обратная одиночная кавычка а не прямая.

Спасибо!

Можно еще вопрос?

у меня в папке /var/mail - файлы с письмами пользователей.

Если этот файл сильно вырос я его руками обнуляю.

   /bin/cat /dev/null > /var/mail/user1
   /bin/cat /dev/null > /var/mail/user2 ... и т.д.

хотел написать скриптик для перебора всех файлов в папке о выполнения операции над каждым

Получилось что-то типа

#!/bin/sh
#
# тут я выделяю чистое имя пользователя user1, user2, ...
user=`/bin/ls -l /var/mail | grep mail | cut -f 4 -d " " `
/bin/cat /dev/null > /var/mail/$user
exit 0

так он мне создал файлы с длинными именами
А хотел просто выполнить над всеми файлами операцию

/bin/cat /dev/null > /var/mail/user1
/bin/cat /dev/null > /var/mail/user2 ...

Подскажите пожалуйста ...

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

3. "кавычки"  
Сообщение от Vlad (??) on 27-Июл-07, 16:55 
>[оверквотинг удален]
>
>так он мне создал файлы с длинными именами
>А хотел просто выполнить над всеми файлами операцию
>
>/bin/cat /dev/null > /var/mail/user1
>/bin/cat /dev/null > /var/mail/user2 ...
>
>Подскажите пожалуйста ...
>
>

Не очень понятно....что пользователи сами не могут стереть почту?

Обнулить файл можно через: "echo > filename"
или же стереть и создать файл заново (но здесь проблема, нужно определить права пользователей на файл):
"rm /var/mail/user1"
"touch /var/mail/user1"
"chown user1:user1 /var/mail/user1"

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

4. "кавычки"  
Сообщение от animator (??) on 27-Июл-07, 17:00 
>[оверквотинг удален]
>>
>
>Не очень понятно....что пользователи сами не могут стереть почту?
>
>Обнулить файл можно через: "echo > filename"
>или же стереть и создать файл заново (но здесь проблема, нужно определить
>права пользователей на файл):
>"rm /var/mail/user1"
>"touch /var/mail/user1"
>"chown user1:user1 /var/mail/user1"

Да просто это майловый сервер.
Ящик user1 на отдел  - user1.
Все хотят копировать почту из ящика, а удалять не хотят.
Так мне приходится принудительно обнулять, в субботу например, все ящики всех отделов.


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

6. "кавычки"  
Сообщение от Mikhail email(??) on 27-Июл-07, 18:53 
cd /var/mail/; for i in `ls`; do /bin/cat /dev/null > /var/mail/$i; done

- смысл, думается, понятен. могут потребоваться доп. фильтры и проверки.

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

8. "кавычки"  
Сообщение от L0n3R4ng3r (??) on 31-Июл-07, 17:47 
>[оверквотинг удален]
>
>так он мне создал файлы с длинными именами
>А хотел просто выполнить над всеми файлами операцию
>
>/bin/cat /dev/null > /var/mail/user1
>/bin/cat /dev/null > /var/mail/user2 ...
>
>Подскажите пожалуйста ...
>
>

cd /var/mail && for i in `ls -l |grep ^- | awk -F " " '{print $9}'`; do echo > $i ; done;

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

5. "Присвоение переменной результата выполнения скрипта"  
Сообщение от elvenic (??) on 27-Июл-07, 18:30 

>   iface='ifconfig | grep flags | cut -f 1 -d ":"'
>   iface='echo $iface  | cut -f 1 -d " "'
>   echo "$iface"

Нужно использовать "обратные одиночные кавычки" (`) вместо прямыx ('):

iface=`ifconfig | grep flags | cut -f 1 -d ":"`
iface=`echo $iface  | cut -f 1 -d " "`

Различие между ", ' и `:
Использование (') - это строка символов где не подставлются переменные;
использование (") - это строка символов где подставлются переменные;
а вот использование (`) - это вызов команды которой является строка, и стандартный вывод этой команды будет результируюшим значением (т.е, е нащем случае, то что присвоится переменной iface)

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

7. "Присвоение переменной результата выполнения скрипта"  
Сообщение от anonymous (??) on 27-Июл-07, 23:32 
>Нужно использовать "обратные одиночные кавычки" (`) вместо прямыx ('):

А ещё лучше использовать $()

iface=$(ifconfig | grep flags | cut -f 1 -d ":")
iface=$(echo $iface  | cut -f 1 -d " ")


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

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

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




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

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