我编写了一个脚本来查找所有正在运行的具有特定名称的docker容器,当我直接将其输入到我的终端时它就可以工作但是只要我把它放到Makefile就会抛出错误
/ bin / sh:1:错误替换
这是makefile中的脚本:
remote: FORCE
docker ps -q --filter name=$$(tmp=$${PWD##*/} && printf "%s_workspace" "$${tmp//./}")
为了澄清name =正在执行的那个块之后,它正在尝试获取当前文件夹名称并删除所有。并将其附加到我的容器名称即工作区。
答案 0 :(得分:5)
/bin/sh
不支持您使用的替换运算符。您需要告诉make
使用bash
代替:
SHELL := /bin/bash
如果您想保持配方POSIX兼容,请改用tr
:
remote: FORCE
docker ps -q --filter name=$$(printf '%s_workspace' "$${PWD##*/}" | tr -d .)
如果您使用的是GNU make
,则可能需要使用
remote: FORCE
docker ps -q --filter name=$(subst .,,$(notdir $(PWD)))_workspace
而是让make
对所有字符串处理本身。