Что не так с этим автоматическим скриптом youtube-dl? - PullRequest
0 голосов
/ 28 февраля 2019

Прежде всего, я довольно новичок в написании сценариев bash и только начинаю учиться, очевидно, что-то не так с этим сценарием, но я не знаю, что это такое ...

Я создал скрипт bash для автоматизации загрузки видео с помощью youtube-dl:

#!/bin/bash

echo url:
read url
export url
youtube-dl -f 'bestvideo[height<=360]+worstaudio/worst[height<=360]' $url

Идея состоит в том, что я ввожу в командной строке имя скрипта, например: «360», и он запроситurl (например, видео с YouTube), я вставляю его, а youtube-dl загружает его с указанными параметрами.Это работает как шарм ...

Теперь я хочу сделать сценарий более сложным, и я думаю, что мне нужно преобразовать команду youtube-dl в переменную (конечно, будучи новичком, я мог бы бытьнеправильно, но давайте предположим, что я прав для момента ...)

#!/bin/bash

video="youtube-dl -f 'bestvideo[height<=360]+worstaudio/worst[height<=360]'"

echo url:
read url
export url
$video $url

Когда я пытаюсь это сделать, я получаю сообщение об ошибке: «ОШИБКА: запрошенный формат недоступен» Я не знаю, чтонеправильно ... Я хотел бы решить проблему с наименьшим количеством изменений в коде, насколько это возможно, и я повторяю, я хотел бы знать, что не так с текущим кодом, чтобы я мог извлечь из него уроки.

Заранее большое спасибо!

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Здесь подробно объясняется: Я пытаюсь поместить команду в переменную, но сложные случаи всегда терпят неудачу!

Сначала всегда double-цитируйте свои переменные, если вы не знаете точно что произойдет, если вы этого не сделаете.

Вам не нужно export эту переменную: вы не вызываете никакую другую программукоторый должен использовать его.

Если вы хотите повторно использовать команду, подумайте о том, чтобы поместить ее в функцию:

#!/bin/bash
function video {
    youtube-dl -f 'bestvideo[height<=360]+worstaudio/worst[height<=360]' "$1"
}
read -p "url: " url
video "$url"

На самом деле, я бы сделал это:

  1. добавьте эту функцию в ваш ~ / .bashrc,
  2. и получите этот файл: source ~/.bashrc
  3. , затем вы можете использовать ее из командной строки:

    video 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
    
0 голосов
/ 01 марта 2019

Удалите одиночную кавычку из параметра -f, он будет работать.

Например,

video="youtube-dl -f bestvideo[height<=360]+worstaudio/worst[height<=360]"
...