我是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相同,但没有变化。仅处理第一张图片。
谢谢。
答案 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
你的脚本的问题是你只为循环中的每个元素循环(所以3次)。