将选项传递给Bash函数中的命令

时间:2019-06-12 23:38:13

标签: bash command-line-interface

我想将命令选项传递给功能中的命令。

例如,

我有一个以下脚本,该脚本可与youtube-dl一起使用,并通过vlc媒体播放器流式传输youtube视频URL。

youtube-stream(){
    youtube-dl -i -o - "$(cuturlquerystr "$1" | perl -pe "chomp")" | vlc.exe -
}

vlc有许多命令行选项。我想使用youtube-stream命令中的那些选项。

类似

youtube-stream --pitch-shift="1.5" --rate="1.1" "https://www.youtube.com/watch?v=RVea-2Up8xM" 

以上命令的意思是

youtube-dl -i -o - "$(cuturlquerystr "$1" | perl -pe "chomp")" | vlc.exe - --pitch-shift="1.5" --rate="1.1"

我想通过类似以下的方式来实现。

youtube-stream(){
    youtube-dl -i -o - "$(cuturlquerystr "$1" | perl -pe "chomp")" | vlc.exe - ${options}
}

我知道getopt解析方法,但是我想通过尽可能少的代码来实现。有想法吗?

1 个答案:

答案 0 :(得分:2)

将第一个参数保存在变量中,将其移出参数列表,然后可以使用vlc.exe将所有其余参数传递给"$@"

youtube-stream(){
    local url=$1
    shift
    youtube-dl -i -o - "$(cuturlquerystr "$url" | perl -pe "chomp")" | vlc.exe - "$@"
}