単語と文字の 2 つのパラメーターを受け取り、文字が単語に何回出現するかを返すスクリプトを作成しようとしています。
これが私のコードです:
#!/bin/bash
((counter=0))
for i in $1
do
if i == $2
then
((counter=counter+1))
fi
echo $counter
done
私のスクリプトは毎回 1 を返します。私は Python しか知らないので、私の bash 構文は貧弱です。前もって感謝します。
次の単純な 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"
Bash 構文を使用すると、
grep -c "$2" <<<"$1"
POSIX シェルの場合はecho
、(できれば)printf
文字列を or して にパイプする必要がありますgrep
。
シェルは、トークンをループするときにトークンを個々の文字に分解しません (そして、実際には Python もそうすべきではないと主張する人もいます :-) --for i in foo
単に に設定i
しfoo
ます。