O comando tr causa problemas no shell cygwin bash.exe, mas funciona em mintty.exe
Pergunta
Eu uso o Windows com o cygwin.O comando a seguir deve gerar o número de ocorrências de '/' na string "./bootstrp3.cab".Funciona quando eu uso o shell mintty.exe e gera "1":
echo ./bootstrp3.cab | tr -cd / | wc -c
Infelizmente, ele exibe a seguinte mensagem com o shell bash.exe
Usage:
tr [-cs] string1 string2
tr -s[-c] string1
tr -d[-c] string1
tr -ds[-c] string1 string2
Parece que as duas conchas se comportam de maneira diferente, mas ambas parecem ser o mesmo tipo de concha, porque quando eu echo $0
, saídas bash.exe bash
e saídas mintty.exe -bash
.
Também tentei o comando com o shell bourne (sh.exe), mas ele gera a mesma mensagem do shell bash.exe.
Alguém sabe como posso fazer o comando funcionar com o shell sh.exe ou bash.exe?E alguém sabe por que os dois shells bash se comportam de maneira diferente?
Solução
Você pode fazer a mesma coisa usando sed
e wc
:
echo -n ./bootstrp3.cab | sed 's![^/]!!g' | wc -c