我有:
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
谁能帮帮我
最佳答案
您可以使用 cat
和 sed
:
$ 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/