Перенаправить вывод в переменную?
Мне интересно направить вывод двух команд в переменную. Я не хочу, чтобы вывод отображался на экране, а вместо этого назначил переменную в моем скрипте, чтобы я мог использовать его снова.
что я делаю, так это получаю размер файла из каталога, используя команды, показанные ниже:
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)