如果未提供输入 URL,则使用文本文件中的列表

Kas*_*sam 6 bash shell-script youtube-dl macos

我正在尝试为 yt-dlp 创建一个 shell 脚本,该脚本将 URL 作为来自命令行的输入,或者如果没有给出输入,则使用内部列表。该脚本在给定输入时有效,但在未给出输入并因此使用内部列表时崩溃。

#!/usr/bin/env bash

URLfromTerminal="$1"
PathToList="--batch-file '${HOME}/bin/ytdlp/Lists/Test.txt'"

[[ -z "$URLfromTerminal" ]] && Download="$PathToList" || Download="$URLfromTerminal"

yt-dlp -ciw \
  -S "res:1920" \
  --ffmpeg-location "$HOME"/bin/ffmpeg/ffmpeg \
  "$Download"
Run Code Online (Sandbox Code Playgroud)

未给出输入并使用内部列表时出现错误消息:

yt-dlp: error: no such option: --batch-file '/Users/UserName/bin/ytdlp/Lists/Test.txt'
Run Code Online (Sandbox Code Playgroud)

当从变量扩展时,为什么 yt-dlp 将文本文件的路径视为选项?

我是 shell 脚本新手,不知道什么是最佳实践,所以任何一般性的改进也是受欢迎的。

Mar*_*ler 2

看看你引用了什么!您试图传递两个参数字符串,即

--batch-file
Run Code Online (Sandbox Code Playgroud)

'/Users/UserName/bin/ytdlp/Lists/Test.txt'
Run Code Online (Sandbox Code Playgroud)

作为一个论点,

"--batch-file '/Users/UserName/bin/ytdlp/Lists/Test.txt'"
Run Code Online (Sandbox Code Playgroud)

例如,yt-dlp 知道一个被调用的参数(即它知道如何解释参数字符串)--batch-file,就像它知道一样--help,但它不知道--batch-file '/Users/UserName/bin/ytdlp/Lists/Test.txt'

只是你的最后一行没有"围绕。$Download