0

単語と文字の 2 つのパラメーターを受け取り、文字が単語に何回出現するかを返すスクリプトを作成しようとしています。

これが私のコードです:

#!/bin/bash
((counter=0))
for i in $1
do
if i == $2   
then
((counter=counter+1))
fi

echo $counter
done

私のスクリプトは毎回 1 を返します。私は Python しか知らないので、私の bash 構文は貧弱です。前もって感謝します。

4

2 に答える 2

3

次の単純な bash コードを試してください。

#!/bin/bash

for ((i=0; i<${#1}; i++)); do
    [[ $2 == ${1:$i:1} ]] && ((count++))
done

echo "There's $count occurrences of $2 in $1"
于 2012-10-01T21:36:53.120 に答える
0

Bash 構文を使用すると、

grep -c "$2" <<<"$1"

POSIX シェルの場合はecho、(できれば)printf文字列を or して にパイプする必要がありますgrep

シェルは、トークンをループするときにトークンを個々の文字に分解しません (そして、実際には Python もそうすべきではないと主張する人もいます :-) --for i in foo単に に設定ifooます。

于 2012-10-01T21:34:40.167 に答える