完成第一个脚本后启动文件脚本

时间:2015-09-19 07:22:58

标签: bash shell

我将在3天假期,所以我想在一个文件中完成一项任务,完成后,使用bash脚本启动另一个,我想做的方式是:

  • 在一个文件中列出文件位置,即(toDo.txt
  • 第一个文件完成后,会转到另一个文件。

示例:

doDo.txt内容:

/home/me/www/some_dir/file1F42.sh
/home/me/www/another_dir/fileD2cD.sh
/home/me/www/third_dir/fileG0IU.sh
/home/me/www/last_dir/fileVFpO.sh

file1F42.sh

some commands here

一旦完成,它应跳转到第2行,即:fileD2cD.sh

我不想使用cron,因为我不知道文件何时会完成处理,同时我不想一次性启动它们。

这是我刚刚完成的一个真实例子:

ffmpeg -i Original/$domainName"_"$fileName"_"$f-Original.mp4 -strict experimental -vf "drawtext=fontfile='/usr/share/fonts/truetype/freefont/FreeSansBold.ttf':text='www.alfirdaous.com':x="$SizeX":y="$SizeY":fontsize="$textSize":fontcolor=$textColor" -vcodec libx264 -preset medium -crf 24 -acodec copy Done/"$domainName"_"$fileName"_$f-Done.mp4

mp4Box=$(MP4Box -add Done/"$domainName"_"$fileName"_$f-Done.mp4 "$domainName"_"$fileName"_$f.mp4)

echo $mp4Box >> ffmpeg_exec.log;

# Delete Done files
rm Done/"$domainName"_"$fileName"_$f-Done.mp4

# Get master thumbnail
ffmpeg -itsoffset -150 -i "$domainName"_"$fileName"_$f.mp4 -vcodec mjpeg -vframes 1 -an -f rawvideo -s 640x480 "$silsilaName"_$f.png

n=0
for offset in 140 160 180 200 220 240 260 280 300 320
do
printf -v outfile "$silsilaName"_"$f"_"%03d.png" "$((++n))"

ffmpeg -itsoffset -$offset -i $domainName"_"$fileName"_"$f.mp4 -vcodec mjpeg -vframes 1 -an -f rawvideo -s 640x480 "$outfile"

完成

ffmpeg -i "$domainName"_"$fileName"_$f.mp4 -vn -ar 44100 -ac 2 -ab 128 -f mp3 $f.mp3
done

最后一个命令行是:     ffmpeg -i“$ domainName”“$ fileName” $ f.mp4 -vn -ar 44100 -ac 2 -ab 128 -f mp3 $ f.mp3

我怎么知道它已完成,完成,所以我可以进入我的文件列表“doDo.txt”并开始运行下一个文件?

1 个答案:

答案 0 :(得分:0)

#! /bin/sh

while read file; do
    echo "Executing $file"
    sh "$file"
done < /dev/stdin

使用情况为<script.sh> < file_list