Прочитайте вывод команды в переменной

Я создаю скрипт bash, но я совершенно новый и потерялся.

Я сделал этот код

cat * | grep "|*parameter1*|" | grep "|*parameter2*|" | cut -f 8,11,12,15,21,23,34 -d "|" | wc -l 

который работает очень хорошо, но мне нужно прочитать выход wc -l в переменную, чтобы я мог сделать среднее значение после этого с помощью другой команды bash. Затем распечатайте это среднее значение и сделайте его понятным для пользователя.

2 Solutions collect form web for “Прочитайте вывод команды в переменной”

Чтобы ответить на ваш прямой вопрос, вам нужно обернуть свой код в последовательности $() , чтобы его результат можно было присвоить переменной. Вот так:

 x=$(your_code_goes_here) 

Тем не менее, у меня есть несколько заметок о вашем однострочном лайнере:

  • Почему ведущий cat * ? Кажется, это бесполезное использование кошки . Вы можете прямо

     grep pattern * 

    который по-прежнему может не быть хорошей идеей, так как * будет соответствовать всем файлам и подкаталогам в вашем текущем каталоге, а grep выдаст предупреждение, если вы попросите его выполнить поиск в каталоге, не поставляя параметр -r (рекурсивный). Использование * может или не может быть подходящим в зависимости от вашего варианта использования.

  • Я не уверен, для чего предназначен wc -l в конце: cut не выводит свой вывод на несколько строк, поэтому wc -l (подсчитывает количество строк) всегда будет возвращать 1.

Вы можете использовать этот синтаксис:

 var=$(cat * | grep "|*parameter1*|" | grep "|*parameter2*|" | cut -f 8,11,12,15,21,23,34 -d "|" | wc -l) 
Interesting Posts

Сохраните AWK FNR как переменную Bash, чтобы продолжить поиск из строки

как написать правило udev для удаления тега?

После шифрования диска, как вы проверяете, что известный обычный текст внутри диска стал тарабарщиной?

Почему Kali Linux так сложно настроить? Почему люди не помогают мне?

Снять устройство

Источники энтропии для Linux

Печать строки после n-го появления совпадения

Тяжелая загрузка приводит к сбоям в работе пользователей, запущенных на базе Linux

OS X: как удержать компьютер от сна во время http-соединения

Файл правила Udev для модема не работает

Попытка получить динамическую страницу с wget без успеха

Не вредно ли закрывать окно терминала без надлежащего выхода из приложения?

Как узнать, когда была запущена / остановлена ​​/ перезапущена служба systemd?

Как восстановить raid5 на nas с разделом отказа?

Почему awk split () делает первое поле последним элементом массива?

Linux и Unix - лучшая ОС в мире.