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 脚本新手,不知道什么是最佳实践,所以任何一般性的改进也是受欢迎的。
看看你引用了什么!您试图传递两个参数字符串,即
--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