The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Присвоение переменной результата выполнения скрипта, !*! animator, 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 " "

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

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

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

    • кавычки, !*! animator, 15:01 , 27-Июл-07 (2)
      >>Подскажите где ошибка?
      >>   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 ...

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

      • кавычки, !*! Vlad, 16:55 , 27-Июл-07 (3)
        >[оверквотинг удален]
        >
        >так он мне создал файлы с длинными именами
        >А хотел просто выполнить над всеми файлами операцию
        >
        >/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"

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

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


      • кавычки, !*! Mikhail, 18:53 , 27-Июл-07 (6)
        cd /var/mail/; for i in `ls`; do /bin/cat /dev/null > /var/mail/$i; done

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

      • кавычки, !*! L0n3R4ng3r, 17:47 , 31-Июл-07 (8)
        >[оверквотинг удален]
        >
        >так он мне создал файлы с длинными именами
        >А хотел просто выполнить над всеми файлами операцию
        >
        >/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;

  • Присвоение переменной результата выполнения скрипта, !*! elvenic, 18:30 , 27-Июл-07 (5)

    >   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)




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

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