Перенаправить вывод в переменную?

Мне интересно направить вывод двух команд в переменную. Я не хочу, чтобы вывод отображался на экране, а вместо этого назначил переменную в моем скрипте, чтобы я мог использовать его снова.

что я делаю, так это получаю размер файла из каталога, используя команды, показанные ниже:

ls -l /var/spool | wc -c

Эта команда возвращает мне размер файла в байтах и ​​отображает вывод в виде целого числа. Я заинтересован в том, чтобы это целое число было присвоено переменной, которая мне нравится, чтобы потом я мог сравнить ее с другой переменной.

Это не похоже на работу:

size = ls -l /var/spool | wc -c

Будет ли работать перенаправление?

Как это....

ls -l /var/spool | wc -c > size

В любом случае я хочу, чтобы этот числовой вывод был назначен переменной и не отображался на экране.

Любые предложения очень приветствуются!

2 ответа

Это кажется довольно простым.

romano@RRyS:~$ size=$(ls -l /var/spool | wc -c)
romano@RRyS:~$ echo $size
476

Синтаксис оболочки $(command) исполняет commandи возвращает стандартный вывод: просто сохраните его в переменной.

Ваша команда:

ls -l /var/spool | wc -c > size 

создаст файл с именем size в текущем каталоге (содержит номер и новую строку).

Я предпочитаю решение, предложенное ответом Rmano, но если вы хотите использовать только перенаправление:

read size < <(ls -l /var/spool | wc -c)
Другие вопросы по тегам