我正在尝试创建一个带有两个参数的脚本:一个单词和一个字符,然后返回该单词出现在单词中的次数。
这是我的代码:
#!/bin/bash
((counter=0))
for i in $1
do
if i == $2
then
((counter=counter+1))
fi
echo $counter
done
我的脚本每次都返回1。我只精通python,所以我的bash语法很差。提前致谢。
答案 0 :(得分: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"
答案 1 :(得分:0)
鉴于您使用Bash语法,
grep -c "$2" <<<"$1"
对于POSIX shell,您需要echo
或(最好)printf
字符串和管道grep
。
当你循环它时,shell不会将一个标记分解为单个字符(有些人认为,Python实际上也不应该:-) - for i in foo
只需将i
设置为foo
}。