Передать опции для команды в функции в Bash - PullRequest
0 голосов
/ 13 июня 2019

Я хочу передать параметры команды команде в функции.

Например,

У меня есть следующий скрипт, который работает с youtube-dl, потоковым URL видео YouTube с vlc media.player.

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 Ответ

2 голосов
/ 13 июня 2019

Сохраните первый аргумент в переменной, сдвиньте его из списка аргументов, затем вы можете передать все оставшиеся аргументы в vlc.exe с помощью "$@".

youtube-stream(){
    local url=$1
    shift
    youtube-dl -i -o - "$(cuturlquerystr "$url" | perl -pe "chomp")" | vlc.exe - "$@"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...