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