如何在变量中保存命令行参数并将它们传递给命令

时间:2014-03-30 17:38:05

标签: bash arguments command-line-arguments

我想把一些参数放入变量f.e。

CFLAGS=-c --sysroot=$sysroot

但bash抱怨它找不到文件--sysroot ......为什么?如何将这些参数放入变量并稍后将它们传递给程序。

此外,我想做一些事情:

for dir in ${include_dirs[*]};
do
    CFLAGS=$CFLAGS "-I$dir"
done

但这也无法按预期工作。

编辑:一种解决方案

CFLAGS=("-c" "--sysroot=$sysroot")

并在循环中

CFLAGS=("${CFLAGS[0]}" "-I$dir")

我想知道是否有更明显的解决方案。

1 个答案:

答案 0 :(得分:3)

shell引用非常重要,所以:

CFLAGS="-c --sysroot=$sysroot"

否则BASH将其解释为2个不同的论点。

或者,您可以使用数组来存储它:

CFLAGS=("-c" "--sysroot=$sysroot")

稍后使用它们:

"${CFLAGS[@]}"

引用数组扩展非常重要。