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

Я создаю скрипт 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) 
Linux и Unix - лучшая ОС в мире.