bash - 如何将变量 args="foo bar=\"baz qux\"" 作为 *2* 参数传递?
问题描述
采取以下脚本:
#!/bin/bash
function print_args() {
arg_index=1
while [ $# -gt 0 ]; do
echo "$arg_index: $1"
arg_index=$(expr $arg_index + 1)
shift
done
echo
}
echo "print_args foo bar=\"baz qux\""
echo "-----------------------------------------------"
print_args foo bar="baz qux"
args="foo bar=\"baz qux\""
echo "print_args \$args (args=\"foo bar=\\\"baz qux\\\"\")"
echo "-----------------------------------------------"
print_args $args
echo "print_args \"\$args\" (args=\"foo bar=\\\"baz qux\\\"\")"
echo "-----------------------------------------------"
print_args "$args"
它输出以下内容:
print_args foo bar="baz qux"
-----------------------------------------------
1: foo
2: bar=baz qux
print_args $args (args="foo bar=\"baz qux\"")
-----------------------------------------------
1: foo
2: bar="baz
3: qux"
print_args "$args" (args="foo bar=\"baz qux\"")
-----------------------------------------------
1: foo bar="baz qux"
我想得到的输出如下:
-----------------------------------------------
1: foo
2: bar="baz qux"
这是 的结果print_args foo bar="baz quz"
。但是,我需要它是print_args
使用单个变量参数调用的结果。我最终试图弄清楚如何在设置为运行的 shell 脚本中将多个参数传递给 CMake
cmake ${cmake_flags} ../${target}
需要引用一些选项,cmake_flags
因为它们包含空格,但我总体上希望 CMake 能够识别传递给它的多个不同选项,如果我引用cmake_flags
.
解决方案
请改用数组语法,如下所示:
cmake_flags=( foo bar="baz qux" )
cmake "${cmake_flags[@]}"
推荐阅读
- redux - 在不改变状态的情况下修改 redux saga 中的选择器
- python - 标记在两个图像上检测到的共同元素(OpenCV)-PYTHON
- python - 不同库的不同结果和性能
- ios - 以编程方式设置约束的问题 Swift
- python - TypeError:需要一个类似字节的对象,而不是'str'python
- python - ImportError:无法导入名称 libsvm
- javascript - 如何在 React 中渲染不同的布局?
- microsoft-graph-api - MS Outlook 加载项 saveAsync 方法返回错误 ID
- postgresql - 在 pgAdmin3 中为没有密码的用户访问 Postgres 数据库
- python - 尝试在子例程中运行 WHILE 循环时出错