Como construir uma string de comando apropriada no bash? Citando questões, acho

1

Eu tenho uma pergunta muito novata, tenho certeza. Eu estou tentando construir um script para editar os timestamps internos EXIF de um número de arquivos de foto JPG, usando o utilitário exiftool de linha de comando. Meu problema real vem na construção da string de comando.

Preciso que o comando executado pelo script apareça da seguinte maneira:

exiftool -overwrite_original_in_place -DateTimeOriginal="2015:12:29 08:00:00" filename.jpg

A parte relevante do meu script é:

# compute timestamp
TIMESTAMP="2015:12:29 'printf %02d $HOUR':'printf %02d $MIN':'printf %02d $SEC'"
# Set options string for exiftool
EXOPTION='-overwrite_original_in_place -DateTimeOriginal="'$TIMESTAMP'"'
# Execute exiftool on the current file
exiftool $EXOPTION $f

No entanto, a opção set -x no meu script mostra que o que está sendo executado é

exiftool -overwrite_original_in_place '-DateTimeOriginal="2015:12:29' '08:00:00"' filename.jpg

Os caracteres extras de aspas simples estão sendo inseridos na opção DateTimeOriginal e não entendo por que ou como.

Agradecemos antecipadamente por qualquer assistência prestada.

JGB

    
por user127236 07.02.2016 / 23:24

1 resposta

0

Você não deve ter medo do que a opção -x mostra para você. Ele apenas indica onde os limites de palavras e espaços em branco são encontrados em seu próprio caminho, mas não é o que seu comando será quando chamado.

No entanto, você deve considerar escrever suas expressões um pouco mais simples para a imagem clara. Por exemplo:

TIMESTAMP='printf '2015:12:29 %02d:%02d:%02d' $HOUR $MIN $SEC'
EXOPTION="-overwrite_original_in_place -DateTimeOriginal=\"$TIMESTAMP\""
    
por 10.02.2016 / 23:23