macOS Shell脚本提示输入URL后执行yt-dlp报无此文件或目录问题求解
问题原因及解决方案
第一个脚本仅输出不执行的原因
- 你使用
printf只是将拼接完成的命令字符串打印到终端,没有触发系统执行该命令的逻辑,自然不会实际运行yt-dlp。
第二个脚本提示「无此文件或目录」的原因
- 你把整段命令(包含yt-dlp的参数部分)都用双引号包裹了,Shell会把整个引号内的内容当做单个可执行文件的名称去系统路径中查找,不存在名称为
yt-dlp -f 'bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b' 你输入的URL的程序,所以报错。
正确写法
直接去掉包裹整段命令的引号即可,同时为了避免URL中包含空格、特殊符号时解析出错,建议给$URL变量加上双引号包裹:
#!/bin/bash echo "paste youtube url" read URL yt-dlp -f 'bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b' "$URL"
可选补充
如果你需要脚本既打印执行的命令,又实际运行,可以在执行命令前加set -x开启调试模式:
#!/bin/bash echo "paste youtube url" read URL set -x yt-dlp -f 'bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b' "$URL" set +x # 执行完后关闭调试模式
内容的提问来源于stack exchange,提问作者dlevens
相关产品推荐
相关产品推荐

