shell脚本计算字符串中的分号

时间:2012-01-28 14:12:45

标签: shell

我将以下代码编写为项目工作的一部分。我需要根据输入字符串中i(半冒号)的数量打印;值。但是while循环没有被执行。它正在返回错误。我尝试了很多替代方案,但无法弄明白。

IN="aa;bb;cc;"
c= echo $IN | tr -dc ';' | wc -c 
echo $c 
i=1
while [ $i -le $c ]; 
do 
    echo $i
    i=`expr $i + 1` 
done

3 个答案:

答案 0 :(得分:1)

你需要改变这个:

c= echo $IN | tr -dc ';' | wc -c 

到此:

c=`echo $IN | tr -dc ';' | wc -c`

以便运行echo $IN | tr -dc ';' | wc -c,并将其输出保存在c中 - 就像您之后在脚本中已经为i做的那样:

i=`expr $i + 1` 

答案 1 :(得分:0)

如果你可以使用awk,那就更短更容易了:

echo $IN | awk '{ print length(gensub("[^;]","","g",$0)) }'

答案 2 :(得分:0)

一旦有;字符串,就不需要循环。 shell可以使用${#variable}为您计算变量中的字符。

$ IN="aa;bb;cc;"
$ c=$(echo $IN | tr -dc ';')
$ echo ${#c}
3