bash 为参数赋值 space 的变量
bash assign variable with parameters with space in value
我需要通过我的 ytdlExtraOptions
变量将 --external-downloader ffmpeg --external-downloader-args -movflags frag_keyframe+empty_moov
作为 4 个参数传递给我的 bash 函数(在我的 .bash_functions
中定义):
$ set -- --external-downloader ffmpeg --external-downloader-args -movflags\ frag_keyframe+empty_moov
$ echo
-movflags frag_keyframe+empty_moov
$ ytdlExtraOptions="--external-downloader ffmpeg --external-downloader-args -movflags\ frag_keyframe+empty_moov"
$ set -- $ytdlExtraOptions
$ echo
-movflags\
使用 bash 数组:
$ ytdlExtraOptions=(--external-downloader ffmpeg --external-downloader-args -movflags\ frag_keyframe+empty_moov)
$ echo ${ytdlExtraOptions[3]}
-movflags frag_keyframe+empty_moov
$ set -- ${ytdlExtraOptions[@]}
$ echo
-movflags
如何正确分配我的 ytdlExtraOptions
变量?
使用 bash 数组。
set -- --external-downloader ffmpeg --external-downloader-args "-movflags frag_keyframe+empty_moov"
toto=("$@")
set -- "${toto[@]}"
echo
或者你可以使用 evil eval
和 printf "%q "
来正确引用和重新评估你的参数:
set -- --external-downloader ffmpeg --external-downloader-args "-movflags frag_keyframe+empty_moov"
toto=$(printf "%q " "$@")
eval set -- "$toto"
我需要通过我的 ytdlExtraOptions
变量将 --external-downloader ffmpeg --external-downloader-args -movflags frag_keyframe+empty_moov
作为 4 个参数传递给我的 bash 函数(在我的 .bash_functions
中定义):
$ set -- --external-downloader ffmpeg --external-downloader-args -movflags\ frag_keyframe+empty_moov
$ echo
-movflags frag_keyframe+empty_moov
$ ytdlExtraOptions="--external-downloader ffmpeg --external-downloader-args -movflags\ frag_keyframe+empty_moov"
$ set -- $ytdlExtraOptions
$ echo
-movflags\
使用 bash 数组:
$ ytdlExtraOptions=(--external-downloader ffmpeg --external-downloader-args -movflags\ frag_keyframe+empty_moov)
$ echo ${ytdlExtraOptions[3]}
-movflags frag_keyframe+empty_moov
$ set -- ${ytdlExtraOptions[@]}
$ echo
-movflags
如何正确分配我的 ytdlExtraOptions
变量?
使用 bash 数组。
set -- --external-downloader ffmpeg --external-downloader-args "-movflags frag_keyframe+empty_moov"
toto=("$@")
set -- "${toto[@]}"
echo
或者你可以使用 evil eval
和 printf "%q "
来正确引用和重新评估你的参数:
set -- --external-downloader ffmpeg --external-downloader-args "-movflags frag_keyframe+empty_moov"
toto=$(printf "%q " "$@")
eval set -- "$toto"