bash - 这个 youtube-dl 自动脚本有什么问题?

标签 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

当我尝试此操作时,它会抛出一个错误:“错误:请求的格式不可用 ” 我不知道出了什么问题......我想用尽可能少的代码更改来解决问题,我重复一遍,我想知道当前代码有什么问题,以便我可以从中学习。

提前非常感谢您!

最佳答案

这里有详细解释:I'm trying to put a command in a variable, but the complex cases always fail!

首先总是双引号你的变量,除非你确切知道如果不这样做会发生什么。

您不需要导出该变量:您不会调用任何其他需要使用它的程序。

当您想重复使用命令时,请考虑将其放入函数中:

#!/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'
    

关于bash - 这个 youtube-dl 自动脚本有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54932941/

相关文章:

来自另一个脚本错误处理程序的 Bash 函数

linux - 归档不同名称的每小时文件

linux - 如何在 ubuntu bash 中访问 Windows 目录

java - 一个只有 "private final static"变量的 java 类。这是个好主意吗?

python - 如何设置 youtube-dl Python 始终选择 1080p?

php - 在php脚本中使用Youtube-dl

linux - 将命令的输出分配给全局数组,而不会在子 shell 之后丢失数组

python - 从外部函数调用元组作为另一个函数中的双变量

javascript - 使用循环将多个数组组合成一个对象

bash - external-downloader 选项在 youtube-dl 中未按预期工作