2012-07-25 15 views
0

我在Windows中使用了cygwin。以下命令應在字符串「./bootstrp3.cab」中輸出「/」的出現次數。它的工作原理,當我使用mintty.exe外殼和輸出「1」:tr命令會導致cygwin bash.exe外殼出現問題,但可以在mintty.exe中運行

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 shell(sh.exe)試過了這個命令,但是它輸出的信息和bash.exe一樣。

有誰知道我可以如何獲得使用sh.exe或bash.exe shell的命令?還有人知道爲什麼這兩個bash shell的行爲有所不同嗎?

+3

通常情況下,我會說這是不是一個bash的問題,因爲'tr'是一個獨立的程序。但是,我不知道各種Windows/cygwin shell是如何實現的;各種Unix實用程序可能是「內置的」。一個建議是看看'tr -c -d'(分別指定每個選項)是否都適用。 – chepner 2012-07-25 15:15:58

+0

不幸的是,它通過分開選項不起作用。它輸出相同的消息。但是謝謝你的幫助。我可以通過使用perreals建議來解決這個問題。 – Marc 2012-07-26 07:17:08

+0

MinTTY是一個終端,而不是一個shell;你在終端中使用一個shell,並且同時需要兩個。你怎麼開始每一個? – 2012-07-26 17:51:10

回答

1

你可以使用sedwc同樣的事情:

echo -n ./bootstrp3.cab | sed 's![^/]!!g' | wc -c 
+0

謝謝。這幫助我解決了這個問題! – Marc 2012-07-26 07:18:06

相關問題