我是bash脚本的新手,到目前为止,我在没有任何问题的情况下都做得很好。
GNU bash,版本4.3.42(1)-发布(x86_64-pc-linux-GNU)
徐邦图15.04
这让我很困惑,我认为解决方案很简单,我错过了一些基本的东西,但我已经在这方面工作了一周,尝试了许多排列,读取了多个线程,没有任何变化。
这段代码是在任何数量的图像的图像处理例程的末尾出现的,这些图像被分离成R G B通道并单独处理。
这些文件以通道与原始图像0.tiff 1.iff等分离的顺序作为前缀。现在我想按如下方式重新组合它们;
重命名为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也是如此,但没有改变。仅处理第一个图像。
谢谢。
我不完全理解这个问题,因为我不知道convert是如何工作的,也不知道这是否是问题所在,但要将所有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次)。