Bash脚本中的字符串连接

时间:2011-10-27 15:12:44

标签: bash shell

我正在写这个Bash脚本:

count=0   
result

for d in `ls -1 $IMAGE_DIR | egrep "jpg$"`
do

    if (( (count % 4) == 0 )); then
                result="abc $d"

                if (( count > 0 )); then
                    echo "$result;"
                fi

        else
            result="$result $d"
        fi

        (( count++ ))

done

if (( (count % 4) == 0 )); then
    echo $result
fi

该脚本是在将值除以4时将部分字符串连接成字符串,并且应该大于0。

在IMAGE_DIR中,我有8张图片,

我得到了这样的输出:

abc et004.jpg
abc et008.jpg

但我希望有:

abc et001.jpg et002.jpg et003.jpg et004.jpg;
abc et005.jpg et006.jpg et007.jpg et008.jpg;

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:7)

=运算符必须始终写在其周围没有空格:

result="$result $d"

(shell程序设计与普通程序设计最重要的区别在于,空格在你不期望的地方很重要。这就是其中之一。)

答案 1 :(得分:2)

这样的东西?

count=0   

find $IMAGE_DIR -name "*.jpg" |
while read f; do
        if (( (count % 4) == 0 )); then
                result="abc $f"

                if (( count > 0 )); then
                        echo $result
                fi

        else
                result="$result $d"
        fi

        (( count++ ))
done

答案 2 :(得分:1)

这样的事情(当然未经测试):

count=0 result=

for d in "$IMAGE_DIR"/*jpg; do
   (( ++count % 4 == 0 )) &&
     result="abc $d"
   (( count > 0 )) &&
     printf '%s\n' "$result" ||
      result+=$d
done