у меня есть var, в котором хранится строка, и нужно проверить, есть ли в ней строки:
вот моя идея о том, как проверить, echo $var | wc -l не работает, он всегда говорит 1, хотя у него есть 3
echo -e не работает
5 ответов
котировки имеют значение.
принятый ответ и другие ответы, размещенные здесь, не работают в случае пустой переменной (неопределенная или пустая строка).
другой способ использования здесь строки в bash:
Как говорится в комментарий пустой $var приведет к 1 строке вместо 0 строк, потому что здесь строки в этом случае добавьте символ новой строки (объяснение).
вы можете заменить " wc-l "на" wc-w", чтобы подсчитать количество слов вместо строк. Это не будет считать новые строки и может использоваться для проверки, если исходные результаты пусты, прежде чем продолжить.
верхние проголосовавшие ответы терпят неудачу, если никакие результаты не были возвращены grep.
там скажут нам, есть 1 Виггам в списке, даже если их нет.
вместо этого, вам нужно сделать одну дополнительную проверку, чтобы увидеть, если переменная пустая ( -z , как и в "ноль"). Если grep ничего не вернул, переменная будет пустой.
Часто нужно подсчитать количество файлов при выводе в консоли BASH. Хорошо если файлов 10 штук. Как быть если их сотни и у каждого файла сложное имя. Тут идеально подойдёт команда wc. Её лучше использовать вместе с фильтром. Например с командой grep команда wc хорошо сочетается. Можно подсчитать количество слов в документе. Это редко используют.
При выводе в командной строке очень часто попадают файлы с точками вместо имён .. или . .Тут нужно отфильтровать вывод и только потом применять команду wc.
Как подсчитать количество файлов в директории. Тут добавлена сортировка и удаление дублей. uniq — убирает дубли, перед unic должна идти сортировка sort
Удобно сочетать команду ls и wc. Подробнее о утилите ls написано в статье как вывести файлы директории в консоли при помощи ls BASH.
Требуется посчитать суммарное количество строк в файлах txt , лежащих в каталоге, имя которого задано параметром сценария.
Что сделать, чтоб оно заработало?
2 ответа 2
если уж используете shebang, то его синтаксис не предусматривает пробелов в этом месте.
а скрипт может выглядеть примерно так:
или, если требуется сохранить (и потом напечатать) количество строк в переменной: