使用一个提示输入实现两个不同的功能

使用一个提示输入实现两个不同的功能

我想制作特定范围内的延时电影。脚本在制作电影之前一直有效。以下是脚本:

    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)

由于将一系列图片复制到临时文件夹中,变量“$begin”的值正在发生变化。图片的范围是正确的,但延时电影名称从$(ffmpeg -r 12 -pattern_type glob -i "*.jpg" -c:v libx264 Zeitraffer$begin"-"$end.avi) 逻辑上讲,“$begin”也得到了“$end”,因此文件看起来像:Zeitraffer20150131-20150131.avi 有没有办法将第一个提示也用作某个固定值,以便我可以在最后使用它来制作电影?它应该看起来像 Zeitraffer20150101-20150131.avi

答案1

首先,begin=$beginend=$end命令根本不执行任何操作,因此请丢弃它们。其次,不要$begin在循环过程中增加,而是$current为当前正在处理的日期创建另一个变量(例如);$begin在开始时将其设置为,并在等于时停止$end

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

while [ $current != $end ]; do

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

答案2

谢谢!成功了。现在它看起来像:

   #!/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."

相关内容