Bash脚本中的字符串连接

Bash脚本中的字符串连接,bash,shell,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

我正在写这个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时,脚本将部分字符串合并为一个字符串

在图像目录中,我有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;

如何解决此问题?

必须始终编写
=
运算符,且其周围不带空格:

result="$result $d"

(shell编程与普通编程最重要的区别在于,空格在您不希望出现的地方很重要。这就是其中之一。)

必须始终编写
=
运算符,且其周围不能有空格:

result="$result $d"
(shell编程与普通编程最重要的区别在于,空格在您不希望的地方很重要。这就是其中之一。)

类似的内容(当然,未经测试):

类似这样的情况(当然,未经测试):

像这样的

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
像这样的

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

也许问这样的问题会更好?作为一个补充,你应该避免对背虱感到太舒服,因为它们不会筑巢。只需使用
$(…)
即可。此外,如果您的jpg文件带有空格(比如读d时使用ls | grep;do…),for循环也会严重失败。也许这样问会更好?作为补充,您应该避免使用反勾号,因为它们不会嵌套。只需使用
$(…)
即可。此外,如果您的jpg文件带有空格(例如,读取d时使用ls | grep;do…),则for循环将严重失败。谢谢,这很有希望。我想我应该在循环之外声明结果,对吗?我已经更新了我的代码,但我想我遗漏了一些东西来连接字符串。。。我仍在寻找错误。你知道吗?没关系,我的解决方案现在有效了,我应该把echo放在前面。谢谢!谢谢,这很有希望。我想我应该在循环之外声明结果,对吗?我已经更新了我的代码,但我想我遗漏了一些东西来连接字符串。。。我仍在寻找错误。你知道吗?没关系,我的解决方案现在有效了,我应该把echo放在前面。谢谢!