yarkov
@yarkov
Помог ответ? Отметь решением.

Почему один код дает разный результат?

Пытаюсь посчитать количество строк кода в файлах *.js:
#!/bin/bash
# файл wc.sh
set -e
find ./src -type f -name "*.js" | xargs cat | sed '/^\s*$/d' | grep -i -v -e '^\s*(\/\/|\/\*|\s*\*)\s*' | wc -l

Результат:
$ ./wc.sh
4585

А если выполнить прямо в терминале:
$ find ./src -type f -name "*.js" | xargs cat | sed '/^\s*$/d' | grep -i -v -e '^\s*(\/\/|\/\*|\s*\*)\s*' | wc -l
2906


Почему в терминале правильное количество? То есть команда в скрипте не учитывает обработку grep-ом?
  • Вопрос задан
  • 347 просмотров
Решения вопроса 1
yarkov
@yarkov Автор вопроса
Помог ответ? Отметь решением.
В итоге заработало одинаково так:
$ find ./src -type f -name "*.js" | xargs cat | sed '/^\s*$/d' | grep -i -v -E '^\s*(\/\/|\/\*|\s*\*)\s*' -c
2469
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Frankenstine
@Frankenstine
Сисадмин
Экранирование в скриптах работает... немного не так как в командной строке :) Требуется дополнительное экранирование слэшей. Или заменить двойные кавычки одинарными.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы