我的 bash 腳本呼叫 Image-magic 的 convert 實用程式,根據提供的條件將幾種型別的輸入影像堆疊在一起:
if [ "$DETAILS" == 1 ]; then
#stack 3 types of images in vertical row
convert \( "${output}/${target}*.png" -bordercolor lightgoldenrod2 -border 0x2 -append \) \( "${output}/${dist}*.png" -bordercolor lightgoldenrod2 -border 0x2 -append \) \( "${output}/${angl}*.png" -bordercolor lightgoldenrod2 -border 0x2 -append \) -bordercolor lightgoldenrod2 -border 2x0 append -background white -alpha deactivate ${output}/HBONDS-summary.png
else
#stack 1 type of images in vertical row
convert \( "${output}/${target}*.png" -bordercolor lightgoldenrod2 -border 0x2 -append \) -bordercolor lightgoldenrod2 -border 2x0 append -background white -alpha deactivate ${output}/HBONDS-summary.png
fi
由于兩個選項之間的差異只是塊的數量
\( .. \)
為轉換提供,是否可以將 IF 條件放在轉換內部以簡化腳本,例如這可能是錯誤的 bash 語法,但總體思路可能是:
# Add two more blocks with ${dist} and ${angl} images if we match the condition:
convert \( "${output}/${target}*.png" -bordercolor lightgoldenrod2 -border 0x2 -append \) **!NB >>> if [ "$DETAILS" == 1 ];** then \( "${output}/${dist}*.png" -bordercolor lightgoldenrod2 -border 0x2 -append \) \( "${output}/${angl}*.png" **fi;** <<< -bordercolor lightgoldenrod2 -border 0x2 -append \) -bordercolor lightgoldenrod2 -border 2x0 append -background white -alpha deactivate ${output}/HBONDS-summary.png
uj5u.com熱心網友回復:
你可以這樣做:
convert_extra_args=()
if [ "$DETAILS" == 1 ]; then
convert_extra_args=(
\( "${output}/${dist}*.png" -bordercolor lightgoldenrod2 -border 0x2 -append \)
\( "${output}/${angl}*.png" -bordercolor lightgoldenrod2 -border 0x2 -append \)
)
fi
convert \( "${output}/${target}*.png" -bordercolor lightgoldenrod2 -border 0x2 -append \) "${convert_extra_args[@]}" -bordercolor lightgoldenrod2 -border 2x0 append -background white -alpha deactivate ${output}/HBONDS-summary.png
uj5u.com熱心網友回復:
@oguzismail 的解決方案對于構建一組復雜的選項和便于參考可能更簡潔,但我只是想展示另外兩種可能性。請注意,這些是bash-isms特定于 bash-like shell 的。
輸出紅色框,但如果 DETAILS 為 1,則添加藍色框:
DETAILS=0
magick -size 100x100 xc:red $( [ $DETAILS -eq 1 ] && echo "xc:blue append" ) result.png

和:
DETAILS=1
magick -size 100x100 xc:red $( [ $DETAILS -eq 1 ] && echo "xc:blue append" ) result.png

另一種可能:
DETAILS=""
printf "$DETAILS" | magick -size 100x100 xc:red $(cat) result.png

和:
DETAILS="xc:blue xc:yellow append"
printf "$DETAILS" | magick -size 100x100 xc:red $(cat) result.png

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/515843.html
