Как прочитать значение в UNIX - PullRequest
1 голос
/ 13 октября 2010

Я новичок в UNIX и не могу понять, как получить доступ к определенному номеру из файла.Ниже приводится результат, который я получаю, когда набираю квоту -v.alt text

Мне нужно написать скрипт, чтобы проверить и убедиться, что я нахожусь в рамках квоты, если не отображается предупреждение.Итак, я хочу получить доступ к номеру «использования» и «лимиту» из этого файла и использовать оператор «если» для сравнения.Может кто-нибудь, пожалуйста, скажите мне, как я могу получить доступ к данным в этом конкретном месте.(Например: 205539 в области «использования» и 200000 в области «ограничения» в этом файле).Любая помощь будет принята с благодарностью.

Ответы [ 4 ]

3 голосов
/ 13 октября 2010

В оболочке UNIX принято использовать небольшие инструменты, которые выполняют очень маленькие задачи, и комбинировать их для сборки anwser.Базовая система предоставляет вам большое разнообразие инструментов, которые выполняют различные базовые операции над текстом.Например, вы можете запустить квоту следующим образом:

quota | grep undergrad1

, которая запустит квоту и передаст ее вывод в grep, задачей которого является возврат строк, если они содержат его аргумент.Это вернуло бы только строку undergrad1.Затем вы могли бы передать эту строку инструментам, которые разбили бы ее на столбцы.Основной инструмент для этого называется cut .Cut принимает разделитель и спецификацию поля или, альтернативно, количество символов.В вашем случае вы можете стереть вывод grep перед тем, как пропустить его, чтобы не зависеть от количества символов.Если в квоте используются вкладки для разделения столбцов, вы можете передать их для вырезания следующим образом:

quota | grep undergrad1 | cut -d "\t" -f 3

... но если для этого используется переменное количество пробелов, то вы можете сначала свернуть их водин с tr и его опцией -s:

quota | grep undergrad1 | tr -s " " | cut -d " " -f 3

Обратите внимание, что теперь мы просим cut использовать в качестве разделителя пробел, а не tab.

С этим выдолжен быть в состоянии собрать скрипт, который делает то, что вы хотите.Если пойти дальше, вы можете выполнить команду «Файловая система» в первой строке и попытаться выяснить индекс столбца, прежде чем возвращать их, если вы планируете работать в системах, в которых имена одинаковы, но порядок отличается или любой другой, который соответствует области действия.ваш сценарий.

2 голосов
/ 13 октября 2010
var=$(quote -v | awk '$2>$4{ print "5"}')
echo "$var"
2 голосов
/ 13 октября 2010

Я предлагаю вам вместо этого использовать quota -q, если она доступна в вашей системе:

   -q, --quiet
          Print a more  terse  message,  containing  only  information  on
          filesystems where usage is over quota.

... и тогда вы можете выполнить поиск для интересующей вас файловой системы.Например:

quota -q | grep undergrad4

Должно быть легко проверить состояние возврата grep из скрипта (0 = найденная совпадающая строка, 1 = нет совпадающих строк)

0 голосов
/ 13 октября 2010

Используйте awk, чтобы получить поля в этих конкретных столбцах.Простой сценарий оболочки должен помочь вам с условным условием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...