在循环中添加3到3个单独的变量

时间:2016-06-01 09:49:49

标签: bash loops for-loop

我是bash脚本的新手,直到现在还没有问过问题。

GNU bash,版本4.3.42(1)-release(x86_64-pc-linux-gnu)

xubuntu 15.04

这让我感到难过,我认为解决方案很简单,而且我遗漏了一些基本的东西,但是我一直在努力研究这个问题,尝试了许多排列读取多个线程而没有任何变化。

此代码片段是在分成R G B通道并单独处理的任意数量图像的图像处理程序结束时。

这些文件的前缀是通道与原始图像分开的顺序0.tiff 1.tiff等。现在我想重新组合它们如下;

重命名为r g b没有帮助,因为可能有一百个或更多r g b个频道

       R G B
image1 0 1 2 ... and so on
image2 3 4 5 ...
image3 6 7 8 ... 

因此,组合第一个图像通道0 1 2,然后将R G B的值增加3,得到下一个图像序列3 4 5,依此类推。

通过正确对齐通道和生成彩色图像,3个灰色通道正确地组合了证据。

for循环结合0 1 2并且其余部分失败。我认为语法是for行中的问题 - 也许是变量R G B的封闭,尽管包含变量似乎没有什么区别。

否则,是否通过添加3?

重新分配R G B变量

我通常可以解决这类问题,但我已经结束了它 - 因此问题......

 R=0
    G=1
    B=2

    echo "$R, $G, $B"

for i in {$R $G $B}; do convert $R.tiff $G.tiff $B.tiff -set colorspace sRGB -combine RGB_%d_$NAME.tiff

    let "R=$R+3"
    let "G=$G+3"
    let "B=$B+3"

    done

我确实尝试命名一个新变量,如((newvalue = $ R + 3))并将其赋值给R R = $ newvalue - G和B相同,但没有变化。仅处理第一张图片。

谢谢。

1 个答案:

答案 0 :(得分:1)

我不完全理解这个问题,因为我不知道转换是如何工作的,或者如果这是问题,但是每个循环将所有3个变量增加3,你可以为循环做一个c风格。

for ((R=0,G=1,B=2;R<=100;R+=3,G+=3,B+=3));do

convert $R.tiff $G.tiff $B.tiff -set colorspace sRGB -combine "RGB_%d_$((x++)).tiff"

done

假设您有R<100

的33个值

你的脚本的问题是你只为循环中的每个元素循环(所以3次)。