我想制作特定范围内的延时电影。脚本在制作电影之前一直有效。以下是脚本:
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=$begin
和end=$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."