此youtube-dl自动脚本出了什么问题?

时间:2019-02-28 19:30:07

标签: bash variables youtube-dl

首先,我对bash脚本还很陌生,我才刚刚开始学习,显然这个脚本有问题,但是我不知道它是什么...

我创建了一个bash脚本来使用youtube-dl自动下载视频:

#!/bin/bash

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

这个想法是,我在命令行中输入脚本的名称,例如:“ 360”,它会询问网址(例如: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 :(得分:2)

此处详细说明:I'm trying to put a command in a variable, but the complex cases always fail!

首先始终用双引号括住您的变量,除非您确切地知道 如果不知道会发生什么情况。

您不需要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'
    

答案 1 :(得分:0)

从-f参数中删除单引号,它将起作用。

例如。

out.out