Неожиданные начальные пробелы при использовании команды wc -l
Я пытаюсь выполнить приведенную ниже команду - но в выводе вводится пробел.
ls -lrt | wc -l
29
echo $SHELL
/bin/bash
Когда я запускаю ту же команду на другом компьютере, результат будет таким, как ожидалось.
ls -lrt | wc -l
183
echo $SHELL
/bin/bash
Пробелы приводят к сбою проверки perl
unless ( $phCountRet->{COUNT} =~ /^\d+$/ ){
...
}
Я могу выбрать обрезку ведущих пробелов, а затем выполнить проверку, но это не будет чистым решением.
Любой указатель на то, что может быть причиной, будет большой помощью.
2 ответа
Как я отметил в WC на OSX - Return включает пробелы, это деталь реализации, которая не является явной в стандарте POSIX (поэтому это зависит от предпочтения разработчика выравнивать столбцы - или нет).
Использование
unless ( $phCountRet->{COUNT} =~ /^\s*\d+$/ ){
это соответствует также числам с пробелами впереди.