Bash中的字符串布尔值

时间:2012-10-01 21:28:16

标签: string bash boolean

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

这是我的代码:

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

echo $counter
done

我的脚本每次都返回1。我只精通python,所以我的bash语法很差。提前致谢。

2 个答案:

答案 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 }。