在bash中使用扩展连接变量

在bash中使用扩展连接变量,bash,shell,variables,Bash,Shell,Variables,我正在尝试使用bash脚本的expansion变量属性简化gcc的编译行 假设我定义了一个包含源文件文件夹的变量SRC=SRC/,以及一个额外的变量C_SOURCES=(source1.C source2.C…对源文件本身进行计数 如果我编写类似于“${SRC}${C_SOURCES[@]}”,结果是只有C_SOURCES变量中的第一个值获得SRC中的值,因此:SRC/source1.C source2.C…。这不是我所期望的 我应该如何用变量扩展重写该行,以便C\u SOURCESvariab

我正在尝试使用bash脚本的expansion变量属性简化
gcc
的编译行

假设我定义了一个包含源文件文件夹的变量
SRC=SRC/
,以及一个额外的变量
C_SOURCES=(source1.C source2.C…
对源文件本身进行计数

如果我编写类似于
“${SRC}${C_SOURCES[@]}”
,结果是只有
C_SOURCES
变量中的第一个值获得
SRC
中的值,因此:
SRC/source1.C source2.C…
。这不是我所期望的

我应该如何用变量扩展重写该行,以便
C\u SOURCES
variable中的所有值都获得
SRC
variable中的值

试试这个:

PATHS=($(for x in ${C_SOURCES[@]}; do echo "$SRC/$x"; done))
我选择包含
/
只是为了确定。这将无法正确处理带有空格的文件名或路径。

请尝试以下操作:

PATHS=($(for x in ${C_SOURCES[@]}; do echo "$SRC/$x"; done))
我选择包含
/
只是为了确定。这将无法正确处理带有空格的文件名或路径。

您可以使用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'
您可以使用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'

不知道是否是打字错误,但是
source 2.c
将是数组中的两个不同元素,除非您引用it@SaintHax数组是一个变量。不知道它是否是一个输入错误,但是
source 2.c
将是数组中的两个不同元素,除非您引用it@SaintHax数组是一个变量。它在
gcc
指令中似乎不起作用,因为在
for
循环中使用
echo
会在
“$SRC/$x”
末尾引入换行符。但是谢谢您的建议。在
gcc
指令中,它似乎不起作用,因为在
for
循环中使用
echo
会在
“$SRC/$x”
末尾引入换行符。但是谢谢你的建议。事实上,如果我删除
$SRC%s
术语周围的单引号,这对我很有效。多谢各位@EuGENE不知道您想使用最终产品做什么,所以是的,调整它以符合您的目的:)事实上,如果我删除
$SRC%s
术语周围的单引号,它对我有效。多谢各位@EuGENE不知道你想用最终产品做什么,所以是的,调整它以符合你的目的:)