这个 youtube-dl 自动脚本有什么问题?
What's wrong with this youtube-dl automatic script?
首先,我是 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
当我尝试这个时,它抛出一个错误:“错误:请求的格式不可用
“
我不知道出了什么问题...我想尽可能少地更改代码来解决问题,我再说一遍,我想知道当前代码有什么问题,以便我可以从中学习。
非常感谢您!
从 -f 参数中删除单引号它将起作用。
例如
video="youtube-dl -f bestvideo[height<=360]+worstaudio/worst[height<=360]"
这里有详细解释: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]' ""
}
read -p "url: " url
video "$url"
实际上,我会这样做:
- 将该函数添加到您的 ~/.bashrc,
- 源文件:
source ~/.bashrc
那么你就可以在命令行中使用它了:
video 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
首先,我是 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
当我尝试这个时,它抛出一个错误:“错误:请求的格式不可用 “ 我不知道出了什么问题...我想尽可能少地更改代码来解决问题,我再说一遍,我想知道当前代码有什么问题,以便我可以从中学习。
非常感谢您!
从 -f 参数中删除单引号它将起作用。
例如
video="youtube-dl -f bestvideo[height<=360]+worstaudio/worst[height<=360]"
这里有详细解释: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]' ""
}
read -p "url: " url
video "$url"
实际上,我会这样做:
- 将该函数添加到您的 ~/.bashrc,
- 源文件:
source ~/.bashrc
那么你就可以在命令行中使用它了:
video 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'