循环遍历时,额外字符添加到数组的输出中

时间:2014-03-18 04:53:41

标签: bash for-loop scripting

#!/bin/bash

a=coop; b=(`echo $a | sed 's/\(.\)/\1\n/g'`)
for i in ${b[@]}    
do    
  echo -n $i

  count=$((count+1))

  if [ $count = 2 ]; then    
    echo -e '\e[0;34m'$i
    shift
    echo -ne $*'\e[0m'
  fi
done

输出:cooop(中间的是蓝色)。我希望脚本做的是显示存储在名为“a”的变量中的确切单词。但正如您所看到的,“p”旁边会添加另一个“o”。那我怎么去删除额外的信?

1 个答案:

答案 0 :(得分:0)

试试这个:

#!/bin/bash

blue='\e[0;34m'
nc='\e[0m'

a=coop
b=($(echo $a | sed 's/\(.\)/\1\n/g'))
count=0
for i in ${b[@]}; do
    if [ $count = 2 ]; then
        echo -ne "${blue}${i}"
        echo -ne "${nc}"
    else
        echo -n "$i"
    fi
    count=$((count+1))
done