在fish shell开发yt-dlp函数时,如何将$argv转为单个字符串
在fish shell中将数组转换为单个字符串并修复ytaudio函数
在fish shell中,要将数组(比如函数接收的$argv参数数组)转换为单个空格分隔的字符串,直接用双引号包裹数组变量即可,也就是"$argv"。这个写法会自动把数组中的所有元素用空格连接成一个完整的字符串,正好满足yt-dlp的ytsearch:参数需要单个搜索关键词字符串的要求。
修改后的完整函数代码如下:
function ytaudio yt-dlp -f 251 -x ytsearch:"$argv" -o /tmp/yt-audio.opus mpv /tmp/yt-audio.opus rm /tmp/yt-audio.opus end
补充说明
- 当你执行
ytaudio hello world这类带多关键词的命令时,"$argv"会被解析为hello world,yt-dlp会正确搜索包含这两个关键词的内容,而不会把它们当成独立的搜索项。 - 如果需要用其他分隔符拼接数组(比如下划线),可以使用
string join _ $argv的写法,但此场景下空格分隔是最优选择。
内容的提问来源于stack exchange,提问作者berinaniesh
相关产品推荐
相关产品推荐

