2

少し前に、マルチモニター設定の壁紙を自動的に変更するためのスクリプトを作成しました。余分なスペースを埋める色が画像の平均になるように変更したかったのですが、試してみるとスクリプトがうまくいかないようです。これが私が持っているものです:

#!/bin/sh

BACKGROUND="-background #452036"
GRAVITY="-gravity Center"
GRAVITY2="-gravity North"
GRAVITY3="-gravity South"
LEFT_SIZE=1920x1062
RIGHT_SIZE=1280x958
FINAL_SIZE=3200x1080

RANDOM=$$$(date +%s)
FILES=($1/*)
NUM_FILES=${#FILES[*]}
LEFT_IMAGE=${FILES[$RANDOM % $NUM_FILES]}
RIGHT_IMAGE=${FILES[$RANDOM % $NUM_FILES]}

LCOLOR=${convert $LEFT_IMAGE -resize 1x1\! -depth 8 txt:- | tail -1 | grep -E -o "#(.)* " | cut -f1 -d" "}
RCOLOR=${convert $RIGHT_IMAGE -resize 1x1\! -depth 8 txt:- | tail -1 | grep -E -o "#(.)* " | cut -f1 -d" "}
LBACKGROUND="-background" $LCOLOR
RBACKGROUND="-background" $RCOLOR


convert $LBACKGROUND $GRAVITY -scale $LEFT_SIZE ${LEFT_IMAGE}\
    -extent $LEFT_SIZE ~/.left.png

convert $RBACKGROUND $GRAVITY -scale $RIGHT_SIZE ${RIGHT_IMAGE}\
    -extent $RIGHT_SIZE ~/.right.png

convert $BACKGROUND $GRAVITY2 +append \
~/.left.png \
~/.right.png \
~/.wpcompo.png

convert $BACKGROUND $GRAVITY3 -extent $FINAL_SIZE ~/.wpcompo.png ~/.wallpaper.png

それは戻ります:

/home/ryan/Scripts/wpconvert.sh: line 17: ${convert ${LEFT_IMAGE} -resize 1x1\! -depth 8 txt:- | tail -1 | grep -E -o "#(.)* " | cut -f1 -d" "}: bad substitution
4

2 に答える 2

1

サブシェルでconvertを実行したいので、次$()の代わりに必要${}です。

LCOLOR=$(convert $LEFT_IMAGE -resize 1x1\! -depth 8 txt:- | tail -1 | grep -E -o "#(.)* " | cut -f1 -d" ")
RCOLOR=$(convert $RIGHT_IMAGE -resize 1x1\! -depth 8 txt:- | tail -1 | grep -E -o "#(.)* " | cut -f1 -d" ")
于 2012-11-26T14:01:24.503 に答える
1

17行目と18​​行目:使用

LCOLOR=$(convert $LEFT_IMAGE -resize 1x1\! -depth 8 txt:- | tail -1 | grep -E -o "#(.)* " | cut -f1 -d" ")
RCOLOR=$(convert $RIGHT_IMAGE -resize 1x1\! -depth 8 txt:- | tail -1 | grep -E -o "#(.)* " | cut -f1 -d" ")

代わりは。あなたは本当にもっと引用符を使うべきです!一部のファイル名にスペースが含まれていると、スクリプトが失敗します

于 2012-11-26T14:01:54.153 に答える