2013-02-18 60 views
1

shell腳本編程我想在終端爲GIMP

gimp -i -b '(batch-despeckle "check.jpg" "out.jpg" 10 3 -1 255)' -b '(gimp-quit 0)' 

我寫了一個shell腳本,這樣我可以重複使用不同的參數

#!/bin/bash 
filename_src=$1 
filename_dest=$2 
radius=$3 
type=$4 
black=$5 
white=$6 
gimp -i -b '(batch-despeckle \"$filename_src\" \"$filename_dest\" $radius $type $black $white)' -b '(gimp-quit 0)' 

我的命令運行這個瘸子批處理命令使用命令調用此腳本

./gimp_despeckle check.jpg out.jpg 10 3 -1 255 

當我直接運行命令,它的工作原理,但是當我運行s地獄腳本,它失敗了。這讓我感到困惑。有任何想法嗎。

+0

這段代碼的目的是什麼? – 2013-02-18 22:45:52

+0

使用參數調試批處理命令的一種快速方法是在命令的開頭放置「echo」('echo gimp -i -b ...')。這將顯示結果命令而不運行它(如果你不確定命令格式是否正確,這個命令很有用)。 – 2013-02-18 22:53:30

+0

是,或者使用'#!/ bin/bash -x' – 2013-02-19 00:53:30

回答

1

在外殼,你不能與周圍用單引號變量的字符串:變量將不插入,那麼:

#!/bin/bash 
filename_src="$1" 
filename_dest="$2" 
radius="$3" 
type="$4" 
black="$5" 
white="$6" 
gimp -i -b "(batch-despeckle \"$filename_src\" \"$filename_dest\" $radius $type $black $white)" -b '(gimp-quit 0)' 

瞭解報價之間的差異。見http://mywiki.wooledge.org/Quoteshttp://wiki.bash-hackers.org/syntax/words