Мне интересно направить вывод двух команд в переменную. Я не хочу, чтобы вывод отображался на экране, а вместо этого назначил переменную в моем скрипте, чтобы я мог использовать его снова.
что я делаю, так это получаю размер файла из каталога, используя команды, показанные ниже:
ls -l /var/spool | wc -c
Эта команда возвращает мне размер файла в байтах и отображает вывод в виде целого числа. Я заинтересован в том, чтобы это целое число было присвоено переменной, которая мне нравится, чтобы потом я мог сравнить ее с другой переменной.
Это не похоже на работу:
size = ls -l /var/spool | wc -c
Будет ли работать перенаправление?
Нравится....
ls -l /var/spool | wc -c > size
В любом случае я хочу, чтобы этот числовой вывод был назначен переменной и не отображался на экране.
Любые предложения очень приветствуются!
источник
size=`ls -l /var/spool | wc -c`
. используйте этот формат в своем ответе: "` `size =` ls -l / var / spool | wc -c` `` "без двойных кавычек;)$()
по причинам, объясненным здесь: stackoverflow.com/a/9449788/2907484 :-)ls -l /var/spool | wc -c > size_file
вы можетеread size_var < size_file
. (2) См. Также Может ли $ () всегда заменять обратные метки для подстановки команд?Я предпочитаю решение, предложенное ответом Rmano , но если вы хотите использовать только перенаправление:
источник
set -e
,set -o pipefail
и т.д.). Так что, если вы используете$(…)
ваш скрипт, он всегда будет продолжаться, тогда как при перенаправлении его можно настроить как сбой. (что может быть, что вы хотите, или нет).