Я использую Windows с Cygwin. Следующая команда должна вывести количество вхождений символа «/» в строку «./bootstrp3.cab». Он работает, когда я использую оболочку mintty.exe и выводит «1»:
echo ./bootstrp3.cab | tr -cd / | wc -c
К сожалению, он выводит следующее сообщение с оболочкой bash.exe
Usage:
tr [-cs] string1 string2
tr -s[-c] string1
tr -d[-c] string1
tr -ds[-c] string1 string2
Кажется, что две оболочки ведут себя по-разному, но обе они кажутся оболочками одного типа, потому что, когда я echo $0
, bash.exe выводит bash
, а mintty.exe выводит -bash
.
Я также попробовал эту команду с оболочкой bourne (sh.exe), но она выводит то же сообщение, что и с оболочкой bash.exe.
Кто-нибудь знает, как заставить команду работать с оболочкой sh.exe или bash.exe? И кто-нибудь знает, почему две оболочки bash ведут себя по-разному?
tr
— это отдельная программа. Однако я не знаю, как реализованы различные оболочки Windows/cygwin; различные утилиты Unix могут быть встроенными. Один из советов — посмотреть, работает лиtr -c -d
(укажите каждый вариант отдельно) в обоих случаях. - person chepner   schedule 25.07.2012type tr
в каждом? - person me_and   schedule 26.07.2012