Evite o arquivo temporário ao incluir uma propriedade em um arquivo PDF no script bash

0

O script a seguir faz uso de um arquivo temporário "data.txt" ao qual algo é acrescentado antes de ser reutilizado. (Na verdade, simplesmente adiciono alguns metadados a um PDF)

#!/bin/bash

PDFTK="/app/bin/pdftk"
#PDFTK="pdftk"

$PDFTK $1.pdf dump_data output data.txt

cat  >> data.txt << EOF
InfoBegin
InfoKey: Myproperty
InfoValue: Myvalue
EOF

$PDFTK $1.pdf update_info data.txt output $1-$2.pdf

Tanto dump_data quanto update_info podem gravar / ler a partir do stdout (veja man pdftk)

bash-gurus: Como posso reescrever o código de modo que nenhum arquivo seja criado?

pdftk-gurus: Existe uma maneira melhor de adicionar um par de chave / valor?

Obrigado, Bastl.

    
por Bastl 30.09.2017 / 18:16

1 resposta

0

Como isso está usando bash , você pode usar uma substituição de processo:

"$PDFTK" "$1.pdf" update_info <( "$PDFTK" "$1.pdf" dump_data output; cat <<EOF
InfoBegin
InfoKey: Myproperty
InfoValue: Myvalue
EOF
) output "$1-$2.pdf"

Para o utilitário pdftk , o argumento <( ... ) será tratado como um arquivo contendo a saída da primeira chamada pdftk , seguida pelo conteúdo do documento here.

Note também que você deve estar citando suas variáveis (veja " Implicações de segurança de esquecer de citar uma variável em shells bash / POSIX ").

    
por 30.09.2017 / 18:28

Tags