使用bash中的扩展来连接变量

时间:2016-04-28 09:31:05

标签: bash shell variables

我尝试使用bash脚本的扩展变量属性来简化gcc的编译行。

我们说我已经定义了一个包含源文件文件夹的变量SRC=src/,以及另一个变量C_SOURCES=(source1.c source2.c ...)来计算源文件本身。

如果我写"${SRC}${C_SOURCES[@]}"之类的内容,结果是只有C_SOURCES变量中的第一个值获得SRC中的值,因此:src/source1.c source2.c ...。这不是我的预期。

如何使用变量扩展重写该行,以便C_SOURCES变量中的所有值都获得SRC变量中的值?

2 个答案:

答案 0 :(得分:3)

您可以使用printf

C_SOURCES=('source1.c' 'source 2.c' 'source3.c' )

SRC='src/'

printf "'$SRC%s' " "${C_SOURCES[@]}"

输出

'src/source1.c' 'src/source 2.c' 'src/source3.c'

答案 1 :(得分:1)

试试这个:

PATHS=($(for x in ${C_SOURCES[@]}; do echo "$SRC/$x"; done))

我选择包含/只是为了确定。这不会处理正确包含空格的文件名或路径。