【发布时间】:2020-07-17 15:45:21
【问题描述】:
我需要通过我的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 $4
-movflags frag_keyframe+empty_moov
$ ytdlExtraOptions="--external-downloader ffmpeg --external-downloader-args -movflags\\ frag_keyframe+empty_moov"
$ set -- $ytdlExtraOptions
$ echo $4
-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 $4
-movflags
如何正确分配我的ytdlExtraOptions 变量?
【问题讨论】:
-
你真的不能。使用 bash 数组。
-
@KamilCuk 我要用 bash 数组重写我的问题。
-
不清楚你在问什么。请澄清一下很酷。
-
@LéaGris 我重写了我的问题以澄清事情。如果它更容易理解,请撤消你的否决:)
-
您已经分配了它,但请在您的数组变量引用周围添加双引号:
set -- "${ytdlExtraOptions[@]}",它会正确设置您的参数。
标签: bash parameter-passing command-line-arguments