Nenhum erro de arquivo ou diretório

0

Este é o script de shell que estou escrevendo:

#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

É muito simples - estou apenas tentando automatizar alguns comandos em vez de escrevê-los várias vezes ...

Mas estou recebendo alguns erros estranhos. Este é meu primeiro script de shell, então não tenho certeza do que estou fazendo de errado.

Quando chego à última linha:

ffmpeg -i $video_dir -r $fps $image_destination

Eu recebo um problema em $video_dir no comando ffmpeg. Primeiro de tudo, quando eu:

echo $video_dir na linha 13 eu recebo:

/home/usr/ws/youtube_videos/AIRSOFT - 4 Player Split Screenmp4

No entanto,

ffmpeg está retornando um erro:

/home/usr/ws/youtube_videos/AIRSOFT: No such file or directory

É como se estivesse lendo apenas a primeira parte (AIRSOFT) e não o resto (AIRSOFT - 4 ....)

Existe uma razão para isso?

    
por John Lexus 31.07.2017 / 18:52

1 resposta

1

O Bash não sabe usar os espaços no restante do nome do arquivo. Você precisa especificar (escape) para que o Bash use o nome do arquivo inteiro.

Então você pode

  1. Altere "AIRSOFT - tela dividida de 4 players.mp4" para "AIRSOFT \ - \ 4 \ Player Split \ Screen.mp4"
  2. Coloque aspas em torno de $video_dir . (?)
  3. Renomeie o arquivo para algo sem espaços, de modo que o bash possa analisá-lo facilmente.

A terceira opção deve ser mais fácil no seu caso.

    
por 31.07.2017 / 18:56