0

私がやっていることへの正確な参照を見つけることができませんでした...

コマンド内の変数を展開しない次のスクリプトがあります。

#!/bin/bash

name="my name"
`convert -pointsize 250 -font /usr/share/fonts/truetype/msttcorefonts/impact.ttf -fill black -draw 'text 330,900 "$name"' tag.jpg name_my.jpg`

これにより、name の内容ではなくテキスト $name を持つ画像が生成されます。

実際にファイルから行を読み取り、各名前でコマンドを実行する必要があるため、実際のスクリプトは(同じ問題があります):

arr=(`cat names.txt`)
for (( i=0; i<${len}; i+=2 ));
do
        `convert -pointsize 250 -font /usr/share/fonts/truetype/msttcorefonts/impact.ttf -fill black -draw 'text 330,900 "$(${arr[i]} ${arr[i+1]})"' tag.jpg name_${arr[i]}.jpg`
done
4

2 に答える 2

2

あなたの問題は''、バッククォートではなく一重引用符 ( ) です。それらの中にあるため$name、展開されません。代わりに、二重引用符を使用する必要があり、次のように内側の引用符をエスケープできます。

`convert -pointsize 250 -font /usr/share/fonts/truetype/msttcorefonts/impact.ttf -fill black -draw "text 330,900 \"$name\"" tag.jpg name_my.jpg`
于 2013-04-18T07:17:06.483 に答える