Frage

Ich benutze Windows mit Cygwin.Der folgende Befehl sollte die Anzahl der Vorkommen von '/' in der Zeichenfolge " ausgeben./bootstrp3.CAB".Es funktioniert, wenn ich die Minze benutze.exe-Shell und Ausgänge "1":

echo ./bootstrp3.cab | tr -cd / | wc -c

Leider gibt es die folgende Meldung mit der Bash aus.exe-Shell

Usage:
tr [-cs] string1 string2
tr -s[-c] string1
tr -d[-c] string1
tr -ds[-c] string1 string2

Es scheint, dass sich die beiden Schalen unterschiedlich verhalten, aber beide scheinen die gleiche Art von Schale zu sein, denn wenn ich echo $0, schlag.exe-Ausgaben bash und Minze.exe-Ausgaben -bash.

Ich habe den Befehl auch mit der Bourne-Shell ausprobiert (sh.exe), aber es gibt die gleiche Nachricht aus wie bei der Bash.exe-Shell.

Weiß jemand, wie ich den Befehl mit dem sh zum Laufen bringen kann.exe oder bash.exe-Shell?Und weiß jemand, warum sich die beiden Bash-Shells unterschiedlich verhalten?

War es hilfreich?

Lösung

Sie können das Gleiche tun mit sed und wc:

echo -n ./bootstrp3.cab | sed 's![^/]!!g' | wc -c
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top