linux - 向shell中递归扩展的变量添加前缀

标签 linux bash shell

我有:

COMP_FILE+=docker-compose.con-etl.yml
COMP_FILE+=${PWD}/docker-compose.abc.yml
COMP_FILE+=${PWD}/docker-compose.cde.yml
COMP_FILE+=${PWD}/docker-compose.efg.yml
COMP_FILE+=${PWD}/docker-compose.hij.yml
COMP_FILE+=${PWD}/docker-compose.klm.yml
COMP_FILE+=${PWD}/docker-compose.nmo.yml
COMP_FILE+=${PWD}/docker-compose.pqr.yml

我需要在每个 docker-compose 之前添加 -f,例如结果应该是

-f docker-compose.con-etl.yml -f ${PWD}/datahub/docker-compose.abc.yml -f ${PWD}/datahub/docker-compose.cde.yml -f ${PWD}/datahub/docker-compose.efg.yml -f ${PWD}/datahub/docker-compose.hij.yml -f ${PWD}/datahub/docker-compose.klm.yml -f ${PWD}/datahub/docker-compose.nmo.yml -f ${PWD}/datahub/docker-compose.pqr.yml

我正在使用以下命令但无法获得所需的结果并获得

COMPOSE_FILE_ARGS=$(echo ${COMPOSE_FILE[@]/#/-f })

-f docker-compose.con-etl.yml${PWD}/datahub/docker-compose.abc.yml${PWD}/datahub/docker-compose.cde.yml${PWD}/datahub/docker-compose.efg.yml${PWD}/datahub/docker-compose.hij.yml${PWD}/datahub/docker-compose.klm.yml${PWD}/datahub/docker-compose.nmo.yml${PWD}/datahub/docker-compose.pqr.yml 

谁能帮帮我

最佳答案

您可以使用 catsed:

$ cat <<'end' | sed 's/=/=" -f /;s/$/"/' > script.sh
COMP_FILE=docker-compose.con-etl.yml
COMP_FILE+=${PWD}/docker-compose.abc.yml
COMP_FILE+=${PWD}/docker-compose.cde.yml
COMP_FILE+=${PWD}/docker-compose.efg.yml
COMP_FILE+=${PWD}/docker-compose.hij.yml
COMP_FILE+=${PWD}/docker-compose.klm.yml
COMP_FILE+=${PWD}/docker-compose.nmo.yml
COMP_FILE+=${PWD}/docker-compose.pqr.yml
end

然后source生成的script.sh得到:

$ . script.sh
$ echo $COMP_FILE
-f docker-compose.con-etl.yml -f /home/sergioro/docker-compose.abc.yml -f /home/sergioro/docker-compose.cde.yml -f /home/sergioro/docker-compose.efg.yml -f /home/sergioro/docker-compose.hij.yml -f /home/sergioro/docker-compose.klm.yml -f /home/sergioro/docker-compose.nmo.yml -f /home/sergioro/docker-compose.pqr.yml

关于linux - 向shell中递归扩展的变量添加前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55694773/

相关文章:

c++ - exit() 函数无法退出进程

node.js - 在 Linux 网格服务器中安装 Node

作为选项传递时,shell 波浪号扩展不起作用

java - 使用Java在linux系统上获取默认终端应用程序

Python 多处理 - 调试 OSError : [Errno 12] Cannot allocate memory

未在 Aws Ec2 实例上为 PHP 7.2 执行 PHP 代码

shell - 从文本文件中删除重复的行

bash - 在 bash ls 别名中使用星号

linux - Linux 中 while 循环的问题

linux - 更新 Babun 时权限被拒绝