簡體   English   中英

在shell腳本中混合命令和變量

[英]Mix command and variables in shell scripting

我需要一個非常簡單的shell腳本來處理文件夾上的所有圖像並更改其大小。 圖像處理是使用gimp script-fu完成的,shell腳本必須做的唯一事情是for循環。

我做的:

#!/bin/sh

mkdir processed
for image in `ls`
do
    if [ $image != "script.sh" ]
    then
        if [ $image != "processed" ]
        then
            gimp -i -b '(let* ( (img (gimp-file-load 1 "1.jpg" "1.jpg")) (drw (gimp-image-get-active-drawable (car img))) ) (gimp-image-scale-full 1 400 300 3) (file-jpeg-save 1 (car img) (car drw) "processed/1.jpg" "1.jpg" 0.6 0 1 1 "" 3 0 0 2) (gimp-quit 0) )'
        fi
    fi
done

這段代碼有效但是,在腳本fu代碼中我把1.jpg作為文件名,當然,我希望看到$ image變量的值。 我的shell腳本知識是有限的,我失去了我必須將變量放在命令中的方式。

你能幫助我嗎? 謝謝你的時間 :)

for image in *而不是ls for image in *

要將變量傳遞給Gimp腳本並保留Gimp的引號,您需要對外部引號使用雙引號並轉義內部引號:

gimp -i -b "(let* ( (img (gimp-file-load 1 \"$image\" \"$image\")) (drw (gimp-image-get-active-drawable (car img))) ) (gimp-image-scale-full 1 400 300 3) (file-jpeg-save 1 (car img) (car drw) \"processed/$image\" \"$image\" 0.6 0 1 1 "" 3 0 0 2) (gimp-quit 0) )"

您還可以簡化腳本:

mkdir processed
for image in *.jpg
do
    if [[ -f $image ]]
    then
        gimp ...
    fi
done

如果您想要包含更多擴展程序:

for image in *.{jpg,JPG,jpeg,JPEG,gif,GIF,png,PNG}

另一種可能更具可讀性的方法:

mkdir processed

gimp_script_template='(let* ( 
    (img (gimp-file-load 1 "%s" "%s")) 
    (drw (gimp-image-get-active-drawable (car img))) 
  ) 
  (gimp-image-scale-full 1 400 300 3) 
  (file-jpeg-save 1 (car img) (car drw) "processed/%s" "%s" 0.6 0 1 1 "" 3 0 0 2) 
  (gimp-quit 0) 
)'

for img in *; do
    [ ! -f "$img" ] && continue
    [ "$img" = "script.sh" ] && continue
    gimp_script="$( printf "$gimp_script_template" "$img" "$img" "$img" "$img" )"
    gimp -i -b "$gimp_script"
done

你可以試試

"'(let* ( (img (gimp-file-load 1 "$image" "$image")) (drw (gimp-image-get-active-drawable (car img))) ) (gimp-image-scale-full 1 400 300 3) (file-jpeg-save 1 (car img) (car drw) "processed/$image" "$image" 0.6 0 1 1 "" 3 0 0 2) (gimp-quit 0) )'"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM