这是我正在编写的shell脚本:
#FOR YOUTUBE-DL COMMAND
read -r -p "Do you want to download a link? [y/N] " response
if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
read -e -p "Enter Youtube link: " youtube_link
youtube-dl $youtube_link -o "/home/tex/catkin_ws/youtube_videos/%(title)s%(ext)s" -f mp4
fi
#FOR FFMPEG COMMAND
read -e -p "Enter video file dir: " video_dir
video_dir="${video_dir/#\~/$HOME}"
echo $video_dir
read -e -p "Enter fps: " fps
read -e -p "Enter video file image destination: " image_destination
image_destination="${image_destination/#\~/$HOME}"
image_format="image-%04d.jpeg"
image_destination=$(echo ${image_destination}${image_format})
ffmpeg -i $video_dir -r $fps $image_destination
这很简单-我只是试图使一些命令自动化,而不是一遍又一遍地写它们。
但是我遇到了一些奇怪的错误。这是我的第一个shell脚本,所以我不确定自己做错了什么。
当我到达最后一行时:
ffmpeg -i $video_dir -r $fps $image_destination
我$video_dir
在ffmpeg命令中遇到问题。首先,当我:
echo $video_dir
在第13行中,我得到:
/home/usr/ws/youtube_videos/AIRSOFT - 4 Player Split Screenmp4
然而,
ffmpeg返回错误:
/home/usr/ws/youtube_videos/AIRSOFT: No such file or directory
好像它只是在阅读第一部分(AIRSOFT),而不是其余部分(AIRSOFT-4 ....)
是否有一个原因..?
Bash不知道在文件名的其余部分使用空格。您需要指定(转义)它们,以便Bash使用整个文件名。
所以你可以
$video_dir
。(?)第三种选择在您的情况下应该是最简单的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句