2017-03-01 71 views
1

我想重複下列命令多次:末端重複命令,使用變量,新的輸出名字

composite -geometry +0+20 foreground.jpg background.jpg composite001.jpg 

可以說,我要運行該命令50次,加入3到每次當前爲+0,並且每次輸出的名稱都加1。我怎樣才能做到這一點?

+0

'for i in {0..150..3};做複合-geometry + $ i + 20 ... .jpg; done'? (僅適用於Bash) –

回答

0

bash最簡單的方法是使用C風格for循環來遍歷的x(對於幾何形狀)和i(以生成輸出文件)所需的值。

for ((i=0, x=0; i<50; i++,x+=3)); do 
    printf -v output 'composite%03d.jpg' "$x" 
    composite -geometry +"$x"+20 foreground.jpg background.jpg "$output" 
done 

你可以把它符合POSIX標準沒有太多的精力,但在需要在一個子shell運行printf的成本。

i=0 x=0 
while [ "$i" -lt 50 ]; do 
    output=$(printf 'composite%03d.jpg' "$x") 
    composite -geometry +"$x"+20 foreground.jpg background.jpg "$output" 
    : $((i+=1)) $((x+=3)) 
done 
+0

非常感謝。這正是我想要的。 – LnxNewby

0

用bash,你可以試試這個。

for n in {1..50}; do 
    FILENAME=$(printf "composite%03d.jpg" $n) 
    X=$(((n-1)*3)) 
    composite -geometry +$X+20 foreground.jpg background.jpg $FILENAME 
done 
+0

第3行似乎有錯誤,只是爲了通知您。 – LnxNewby