1

I need to pass --external-downloader ffmpeg --external-downloader-args -movflags frag_keyframe+empty_moov through my ytdlExtraOptions variable to one my bash functions (defined in my .bash_functions) as 4 arguments :

$ set -- --external-downloader ffmpeg --external-downloader-args -movflags\ frag_keyframe+empty_moov
$ echo $4
-movflags frag_keyframe+empty_moov
$ ytdlExtraOptions="--external-downloader ffmpeg --external-downloader-args -movflags\\ frag_keyframe+empty_moov"
$ set -- $ytdlExtraOptions
$ echo $4
-movflags\

with a bash array :

$ ytdlExtraOptions=(--external-downloader ffmpeg --external-downloader-args -movflags\ frag_keyframe+empty_moov)
$ echo ${ytdlExtraOptions[3]}
-movflags frag_keyframe+empty_moov
$ set -- ${ytdlExtraOptions[@]}
$ echo $4
-movflags

How can I assign my ytdlExtraOptions variable correctly ?

5
  • 1
    You literally can't. Use a bash array. Commented Apr 5, 2020 at 17:55
  • @KamilCuk I'm going to rewrite my question with a bash array. Commented Apr 5, 2020 at 18:15
  • It is unclear what you are asking. It'd be cool to clarify please. Commented Apr 5, 2020 at 18:30
  • @LéaGris I rewrote my question to clarify things. If it's more understandable, please undo your downvote :) Commented Apr 6, 2020 at 8:24
  • 1
    You already assign it, but please add double quotes around your array variable reference: set -- "${ytdlExtraOptions[@]}" and it will properly set your arguments. Commented Apr 6, 2020 at 12:33

1 Answer 1

1

Use a bash array.

set -- --external-downloader ffmpeg --external-downloader-args "-movflags frag_keyframe+empty_moov"
toto=("$@")
set -- "${toto[@]}"
echo $4

Alternatively you can use evil eval and printf "%q " to properly quote and re-evaulate your args:

set -- --external-downloader ffmpeg --external-downloader-args "-movflags frag_keyframe+empty_moov"
toto=$(printf "%q " "$@")
eval set -- "$toto"
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.