我将在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”并开始运行下一个文件?
答案 0 :(得分:0)
#! /bin/sh
while read file; do
echo "Executing $file"
sh "$file"
done < /dev/stdin
使用情况为<script.sh> < file_list