我尝试使用bash脚本的扩展变量属性来简化gcc
的编译行。
我们说我已经定义了一个包含源文件文件夹的变量SRC=src/
,以及另一个变量C_SOURCES=(source1.c source2.c ...)
来计算源文件本身。
如果我写"${SRC}${C_SOURCES[@]}"
之类的内容,结果是只有C_SOURCES
变量中的第一个值获得SRC
中的值,因此:src/source1.c source2.c ...
。这不是我的预期。
如何使用变量扩展重写该行,以便C_SOURCES
变量中的所有值都获得SRC
变量中的值?
答案 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))
我选择包含/
只是为了确定。这不会处理正确包含空格的文件名或路径。