2016-06-01 5 views
1

저는 bash 스크립팅을 처음 접했고 질문하지 않고 지금까지 꽤 잘 관리했습니다.루프에서 3 ~ 3 개의 개별 변수 추가

GNU bash는 버전 4.3.42 (1) -release (x86_64에-PC-리눅스 GNU)

분투 15.04

이 난처한 상황에 빠진 저를 가지고 있는데이 솔루션은 간단하다 생각하고 내가 놓친 거지 뭔가 근본적 이었지만, 변경없이 여러 스레드를 읽는 많은 순열을 시도하면서 일주일 동안이 작업을 해왔습니다.

이 스 니펫은 R G B 채널로 분리되어 개별적으로 처리되는 이미지 수에 관계없이 이미지 처리 루틴의 끝 부분에 있습니다.

파일은 채널이 원본 이미지 0.tiff 1.tiff 등과 분리 된 순서로 접두어로 붙습니다. 이제 다음과 같이 재결합하려고합니다.

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

그래서 백 이상의 RGB 채널이있을 수 있기 때문에 도움이되지 않습니다 RGB로 이름을 변경

, 0 1 2 다음을 얻기 위해 3에서 RGB 값을 증가 첫 번째 이미지 채널을 결합 다음 이미지 시퀀스 3 4 5 등.

3 개의 회색 채널은 채널의 정확한 정렬과 컬러 이미지 생성을 통해 정확한 증거를 결합합니다.

for 루프는 0 1 2를 결합하고 나머지는 실패합니다. 변수를 감싸는 것이 효과가있는 것 같지 않지만 구문에 대한 구문은 문제가 있다고 생각합니다. 변수 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)) RR = $ newvalue - G와 B는 같지만 변경하지 않아야한다. 첫 번째 이미지 만 처리합니다.

감사합니다.

+0

최대 가치는 무엇입니까? – 123

+0

필요한만큼 많지만 일반적인 세트는 90-120입니다. – GeorgeC

+0

내 질문에 얼마나 많은 사람들이 필요한지 알 수 있습니까? 금액을 변수에 넣었습니까? 아니면 무언가를 계산합니까? – 123

답변

1

변환 작업이 어떻게되는지 또는 문제인지는 모르겠지만 각 루프마다 3 개의 변수를 증가 시키려면 루프에 대해 C 스타일을 수행 할 수 있습니다. 당신이 당신의 스크립트로 R<100

문제에 대한 (33 개) 값이 가정

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 

는 확장 (그래서 3 회)의 각 요소에 대한 당신은 단지 루프가.

+0

imagemagicks convert 명령을 사용하면 다양한 연산자를 사용할 수 있습니다.이 명령은 주요 기능입니다.이 경우 색 공간을 설정하고 입력으로 나열된 이미지를 결합합니다. – GeorgeC

+0

@GeorgeC 그럼 작동하지 않습니까? – 123

+0

첫 번째 3 개 채널이 OK를 결합합니다. 나머지는 작동하지 않습니다 ... – GeorgeC

관련 문제