0

私はcygwinでWindowsを使用しています。次のコマンドは、文字列「./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

2つのシェルの動作は異なるようですが、どちらも同じ種類のシェルのようです。これはecho $0、bash.exeが出力bashし、mintty.exeが出力するため-bashです。

また、bourneシェル(sh.exe)を使用してコマンドを試しましたが、bash.exeシェルと同じメッセージが出力されます。

コマンドをsh.exeまたはbash.exeシェルで動作させる方法を知っている人はいますか?そして、2つのbashシェルの動作が異なる理由を誰かが知っていますか?

4

1 に答える 1

1

sedとを使用して同じことを行うことができますwc

echo -n ./bootstrp3.cab | sed 's![^/]!!g' | wc -c
于 2012-07-25T17:10:19.507 に答える