Atualize após a edição: na esperança de que entendi bem desta vez ...
Este script deve funcionar.
Ele imprimirá erros na tela se não houver imagens png, jpg ou gif.
Ele solicitará um texto, se não for inserido, passará para o próximo, se for inserido, ele adicionará o texto e criará a imagem no OutputDir.
Você pode escolher (não comentar a respectiva linha) entre 3 maneiras de mudar o nome.
#!/bin/bash
OutputDir="Image_With_Text" # We will put the new images elsewhere (more clean)
mkdir -p $OutputDir # It creates the dir, if exists it will give no error
for f in $( ls *.jpg *.png *.gif ); do
printf "# We work on file: $f \n# Enter text or press return to skip:"
read -r REPLY
if [ ! "$REPLY" == "" ]; then
# Uncomment one of the next 3 options (The last uncommented will work)
# NewFile=$OutputDir"/Texted."$f # Here to have a fixed prefix in new name
# NewFile=$OutputDir"/"${REPLY}.${f##*.} # Here to have text_inserted.oldname.extention
NewFile=$OutputDir"/"${REPLY}.$f # Here to have text_inserted.oldextention (gif,png...)
printf "# We add text \"$REPLY\" to the file $f\n# $f --> $NewFile \n\n"
convert -pointsize 18 -font /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf -fill white -stroke black -strokewidth 1 -draw "text 1,23 '$REPLY'" $f "$NewFile"
else
printf "# We skip the file $f \n\n"
fi
done
printf "\n *** DONE *** \n\n"
Suponho que seu script original não funcionaria como você acha :-)
porque você aninha 2 loop.
Dê uma olhada no último comentário desta resposta
Se você se livrar do loop while [ $COUNT -gt 0 ]; do
... done
,
a modificação mínima deve ser para adicionar após a linha com convert ...
algo como
mv a "With_Text."$f
, por exemplo, se o arquivo tiver o nome cat.gif
, o novo será renomeado With_Text.cat.gif
Não consigo entender a última frase. A partir do histórico de sua pergunta, eu acho que você quer ler de um arquivo de texto as linhas que você está digitando pelo teclado.
Se for assim, basta executar seu script com este comando
/bin/bash Myscript.sh < File_With_Text.txt
em que o arquivo File_With_Text.txt
é aquele em que você escreve as linhas.