Добрый день.
Купил и читаю книгу редерика Смита "Полный справочник по 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 " "
Подскажите где ошибка?
>Подскажите где ошибка?
> iface='echo $iface | cut -f 1 -d "по видимому на до было писать так iface=`echo $iface | cut -f 1 -d `
обратная одиночная кавычка а не прямая.
>>Подскажите где ошибка?
>> 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 ...Подскажите пожалуйста ...
>[оверквотинг удален]
>
>так он мне создал файлы с длинными именами
>А хотел просто выполнить над всеми файлами операцию
>
>/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"
>[оверквотинг удален]
>>
>
>Не очень понятно....что пользователи сами не могут стереть почту?
>
>Обнулить файл можно через: "echo > filename"
>или же стереть и создать файл заново (но здесь проблема, нужно определить
>права пользователей на файл):
>"rm /var/mail/user1"
>"touch /var/mail/user1"
>"chown user1:user1 /var/mail/user1"Да просто это майловый сервер.
Ящик user1 на отдел - user1.
Все хотят копировать почту из ящика, а удалять не хотят.
Так мне приходится принудительно обнулять, в субботу например, все ящики всех отделов.
cd /var/mail/; for i in `ls`; do /bin/cat /dev/null > /var/mail/$i; done- смысл, думается, понятен. могут потребоваться доп. фильтры и проверки.
>[оверквотинг удален]
>
>так он мне создал файлы с длинными именами
>А хотел просто выполнить над всеми файлами операцию
>
>/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;
> 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)
>Нужно использовать "обратные одиночные кавычки" (`) вместо прямыx ('):А ещё лучше использовать $()
iface=$(ifconfig | grep flags | cut -f 1 -d ":")
iface=$(echo $iface | cut -f 1 -d " ")