В этом случае я точно не знаю, но распространенной причиной того, что скрипты не работают с более новыми версиями Cygwin bash, являются окончания строки DOS (CR-LF). Возможно, ваше последнее изменение в этом сценарии также изменило окончание строки. Убедитесь, что в ваших скриптах используются только окончания строк Unix (LF). В противном случае, grep увидит свой аргумент шаблона как «Обновленный ^ M».
(Cygwin 1.5.5-1 + CVS 1.11.21) против (cygwin-1.7.5 + CVS 1.11.22)
Готовя новый компьютер к разработке, я обновил Cygwin и клиента CVS, как описано в строке темы: с (Cygwin 1.5.5-1 + CVS 1.11.21) до (cygwin-1.7.5 + CVS 1.11.22)
Все прошло хорошо, но 1-строчный удобный bash- скрипт, который я нес много лет, перестал работать. Раньше он отфильтровывал все неинтересные строки из 'cvs status':
cvs status | grep -F File | grep -v Up-to-date
В новой версии казалось, что «grep -v» просто перестал работать (т.е. ничего не фильтровал). Итак, я попробовал:
cvs status 2>&1 | grep -F File | grep -v Up-to-date
Но это не изменило поведение. Вывод все еще был таким, как будто grep -v никогда не вызывался. Итак, я попробовал:
cvs status 2>&1 | grep -F File 2>&1 | grep -v Up-to-date
И это решило проблему! Теперь скрипт ведет себя одинаково в (Cygwin 1.5.5-1 + CVS 1.11.21) и (cygwin-1.7.5 + CVS 1.11.22).
Мой вопрос сейчас почему?
Что случилось с greg Cygwin, что теперь требуется перенаправление с stderr на stdout?
Обратите внимание, что я намеренно выделил слово script, потому что исходная команда (первая, приведенная выше) по-прежнему одинаково работает как в старой, так и в новой среде, если она набрана из командной строки (то есть не внутри скрипта #! / Bin / bash) ,
Есть идеи, почему это так?
2 ответа на вопрос
Пришло время принять ответ. Пока единственное разумное объяснение состоит в том, что что-то изменилось в том, как grep Cygwin разделяет вывод на stderr и stdout. Если придет лучший или более авторитетный ответ, я рассмотрю его принятие.
Похожие вопросы
-
3
Как я могу "инвертировать" структуру каталогов?
-
2
.profile в Mac OS X?
-
1
Приостановить все, кроме x задач, интенсивно использующих процессор
-
-
7
Запустить синергетический клиент при загрузке в Mac OS X
-
6
Какие функции Zsh вы используете?
-
4
Как синхронизировать скрипты GreaseMonkey между компьютерами?
-
5
Прозрачная командная строка в Vista?
-
4
Используйте портфель Windows из командной строки
-
4
Почему некоторые команды не существуют?
-
11
Есть ли простой способ разделить mp3 файлы?