Usando uma entrada de prompt para duas funções diferentes

0

Eu gostaria de fazer um filme com lapso de tempo em um intervalo específico. O script está funcionando até que ele faça o filme. Aqui o roteiro:

    read -p "Von welchem Zeitraum soll der Zeitrafferfilm sein? (JJJJMMTT): " begin
begin=$begin

read -p "Bis wann soll der Film gehen? (JJJJMMTT)" end
end=$end                   

if [ ! -d Zeitraffer ]

then
echo "Ordner Zeitraffer erzeugt"

/bin/mkdir Zeitraffer

fi

sleep 3

cp *$begin-1200*.jpg ./Zeitraffer

while [ $begin != $end ] 

do

begin='date +"%Y%m%d" -d "$begin +1 day"'

    echo "Kopiere Bild Schedule_$begin-1200*.jpg in den Zeitrafferordner"

        cp *$begin-1200*.jpg ./Zeitraffer

done  

  cd Zeitraffer
    echo "Erzeuge Zeitraffer$begin"-"$end.avi"

  $(ffmpeg -r 12 -pattern_type glob -i "*.jpg" -c:v libx264 Zeitraffer$begin"-"$end.avi)

Uma das variáveis "$ begin" está alterando seu valor devido a copiar o intervalo de imagens em uma pasta temporária. O intervalo das imagens está correto, mas o nome do filme com intervalo de tempo é $(ffmpeg -r 12 -pattern_type glob -i "*.jpg" -c:v libx264 Zeitraffer$begin"-"$end.avi) Logicamente, o "$ begin" está recebendo o "$ end" também, assim o arquivo se parece com, por exemplo: Zeitraffer20150131-20150131.avi Existe uma maneira de usar o primeiro prompt também como algum valor fixo para que eu possa usá-lo no final para fazer o filme? Deve se parecer com Zeitraffer20150101-20150131.avi

    
por Chucrute 27.12.2015 / 12:19

2 respostas

0

Primeiro, os comandos begin=$begin e end=$end não fazem nada, portanto, perca-os. Segundo, em vez de incrementar $begin conforme você passa pelo loop, crie outra variável (por exemplo, $current ) para o dia em que ele está trabalhando atualmente; defina-o como $begin no início e pare quando for igual a $end :

current=$begin
cp *$current-1200*.jpg ./Zeitraffer

while [ $current != $end ]; do

    current='date +"%Y%m%d" -d "$current +1 day"'
    ...
    
por 27.12.2015 / 20:52
0

Obrigado! Isso funcionou. Agora parece:

   #!/bin/bash

read -p "Von welchem Zeitraum soll der Zeitrafferfilm sein? (JJJJMMTT): " begin
begin=$begin

read -p "Bis wann soll der Film gehen? (JJJJMMTT)" end
end=$end                   

if [ ! -d Zeitraffer ]

then
echo "Ordner Zeitraffer erzeugt"

/bin/mkdir Zeitraffer

fi

current=$begin

  cp *$current-1200*.jpg ./Zeitraffer

while [ $current != $end ]; do

    current='date +"%Y%m%d" -d "$current +1 day"'

    echo "Kopiere Bild Schedule_$current-1200*.jpg in den Zeitrafferordner"

    cp *$current-1200*.jpg ./Zeitraffer
done  

  cd Zeitraffer
    echo "Erzeuge Zeitraffer$begin"-"$end.avi"

  $(ffmpeg -r 12 -pattern_type glob -i "*.jpg" -c:v libx264 Zeitraffer$begin"-"$end.avi)  
rm *.jpg # Löscht die temporär kopierten Bilder
echo "Temporäre Bilder wurden gelöscht."
    
por 27.12.2015 / 21:37