Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在bash中获取当前foldername并从名称中删除字符_Linux_Bash_Sed_Makefile - Fatal编程技术网

Linux 如何在bash中获取当前foldername并从名称中删除字符

Linux 如何在bash中获取当前foldername并从名称中删除字符,linux,bash,sed,makefile,Linux,Bash,Sed,Makefile,我试图在makefile中编写一个命令来获取当前文件夹并从名称中删除所有“.”。 我可以使用${PWD##*/}获取当前文件夹,并且可以使用$${PWD/.}删除“.”s,但我不知道如何将这两个文件夹合并为一个文件夹 我需要它的原因是基于项目名称杀死我的docker容器。这是我的命令: docker ps -q --filter name="mycontainer" | xargs -r docker stop 我希望我可以在容器名称之前插入项目名称,如下所示: docker ps -q --

我试图在makefile中编写一个命令来获取当前文件夹并从名称中删除所有“.”。 我可以使用
${PWD##*/}
获取当前文件夹,并且可以使用
$${PWD/.}
删除“.”s,但我不知道如何将这两个文件夹合并为一个文件夹

我需要它的原因是基于项目名称杀死我的docker容器。这是我的命令:

docker ps -q --filter name="mycontainer" | xargs -r docker stop
我希望我可以在容器名称之前插入项目名称,如下所示:

docker ps -q --filter name=$${PWD##*/}"_mycontainer" | xargs -r docker stop
您可以尝试:

var=$(echo ${PWD##*/} | sed "s/\.//")
或:

在您的用例中,将类似于:

docker ps -q --filter name=$(tmp=${PWD##*/} && printf "%s_mycontainer" "${tmp//./}") | xargs -r docker stop

请注意,有更多的方法可以做到这一点(甚至更有效)。

不可能。在之间赋值:
q=${PWD##*/};echo${q/.}
@Alfe当然是可能的…@ingroxd然后告诉我一种方法来组合两个操作符(
${v###*/}
${v/.}
)。@Alfe问题是
如何在bash中获取当前的foldername并从名称中删除字符
:我没有看到任何带有参数扩展的
。。。OP要求[…]一个命令[…]”
,您可以用不同的方式实现它。我们来这里是为了互相帮助,而不是展示我们的能力,因此,如果您有任何可以改进答案或问题的地方,请随时帮助我们。如果你不这样做,我们会很感激你的沉默。@ingroxd哇,那是不礼貌的。当我说这是不可能的时候,我提到了“我不知道如何把这两个结合成一个”这句话。我只是说说而已,不是一个完美的答案。我甚至提供了一个工作环境,使用这两种方法(不直接组合它们,因为这是不可能的)。当我被误解为被给予怀疑的好处而不是粗鲁的回答时,我会很感激。我不得不使用
tr
,因为我在一个Makefile中运行它:
docker ps-q——filter name=$$(printf'%s#container'$${PWD##*/}tr-d.)| xargs docker stop
docker ps -q --filter name=$(tmp=${PWD##*/} && printf "%s_mycontainer" "${tmp//./}") | xargs -r docker stop