我正在写这个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;
我该如何解决这个问题?
答案 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