Перенаправление вывода к переменной?

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

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

ls -l /var/spool | wc -c

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

Это, кажется, не работает:

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

Перенаправление работало бы?

Как это....

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

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

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

8
задан 22 November 2014 в 22:52

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 в текущем каталоге (содержащий число и новую строку).

11
ответ дан 23 November 2019 в 05:26

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

read size < <(ls -l /var/spool | wc -c)
6
ответ дан 23 November 2019 в 05:26

Другие вопросы по тегам:

Похожие вопросы: