Intereting Posts
Как связать скрипт bash с комбинацией клавиш? Проблемы с открытием файлов .dvi Запустить окно в определенном размере и местоположении, есть ли общий инструмент для этого? Как убить два или несколько процессов с помощью одной команды kill? Почему ls принимает дубликаты коммутаторов? mount -a – как игнорировать разделы, которые уже установлены или разделы, которые заняты Восстановление разрешений CentOS 6.5 после миграции файлов ncurses based menus Как очистить терминал после выхода из системы? Могу ли я настроить сенсорную панель в качестве клавиш-модификаторов в некоторых случаях? Xargs с несколькими записями аргументов – используйте аргумент переменной окружения после sh -c '…' Подстановочный знак расширения зш Как удалить файловую систему только для чтения с USB-накопителя Компиляция CUPS не работает на Cygwin У SystemD возникли процессы N?

Проблема с переменной чтения от AWK

Я пытаюсь получить информацию о памяти этой командой:

#!/bin/bash set -x cat /proc/meminfo | grep "MemFree" | tail -n 1 | awk '{ print $2 $4 }' | read numA numB echo $numA 

Я получаю это

 + awk '{ print $2 $4 }' + read numA numB + tail -n 1 + grep MemFree + cat /proc/meminfo + echo 

Мои попытки прочитать эти данные для переменной были безуспешными. Мой вопрос в том, как я могу это прочитать переменным? Я хочу прочитать, сколько свободного места памяти: 90841312 КБ

Вы можете использовать read и просто сделать следующее

 while read -r memfree do printf '%s\n' "$memfree" done < <(awk -F: '/MemFree/{print $2}' /proc/meminfo) 

Попробуйте сохранить отдельные значения непосредственно для каждой переменной. Вы также можете удалить cat и tail трубку с помощью флага -m с grep :

 numA=$(grep -m 1 "MemFree" /proc/meminfo | awk '{ print $2 }') numB=$(grep -m 1 "MemFree" /proc/meminfo | awk '{ print $3 }') echo $numA $numB