我正在尝试编写一个 bash 脚本,它接受一个环境变量并将其传递给一个命令。
所以如果我有类似的东西:
export OUT="-a=arg1 -b=\"arg2.0 arg2.1\""
Run Code Online (Sandbox Code Playgroud)
我希望在我的 bash 脚本中执行以下操作:
<command> -a=arg1 '-b=arg2.0 arg2.1'
Run Code Online (Sandbox Code Playgroud)
我有一种方法似乎可以做到这一点,但它涉及使用 eval:
eval <command> ${OUT}
Run Code Online (Sandbox Code Playgroud)
如果我包含set -x正确的命令,我会看到:
+ eval <command> a=arg1 'b="arg2.0' 'arg2.1"'
++ <command> -a=arg1 '-b=arg2.0 arg.1'
Run Code Online (Sandbox Code Playgroud)
但是,我已经探讨了使用 eval 的危险,并且由于这将从用户输入中获取参数,因此不太理想。
由于这是 bash,我还考虑使用数组来存储我的参数并简单地说:<command> "$ARRAY[@]"做我想做的事。我一直在尝试使用 IFS,但我不确定我应该拆分什么。