0

我正在尝试创建一个带有两个参数的脚本:一个单词和一个字符,然后返回该字符在单词中出现的次数。

这是我的代码:

#!/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 shell,您需要echo或(最好)printf将字符串和管道连接到grep.

当您遍历它时,shell 不会将令牌分解为单个字符(并且,有些人认为,Python 实际上也不应该:-) -for i in foo只是设置ifoo.

于 2012-10-01T21:34:40.167 回答