我正在尝试为现有的Docker容器运行以下命令:

docker exec my_docker printf '%sTest' >> /usr/local/src/test.txt

它给了我以下错误:
-bash: /usr/local/src/test.txt: No such file or directory

当我执行以下操作时:
docker exec -it my_docker bash

并键入相同的命令,一切正常。我在这里想念什么吗?

谢谢

最佳答案

这样做有一个很好的理由:它被解释为两个命令。尝试将printf命令包装在命令字符串中:

docker exec my_docker bash -c 'printf "%sTest" >> /usr/local/src/test.txt'

关键是您已经使用了bash运算符。类似于您运行类似的任何时间:
echo one two >> file.txt

不会将“>>”运算符作为回显的参数传递(像“一个”和“两个”那样)。相反,它执行您的echo命令,并将其输出附加到文件中。在这种情况下,“>>”运算符会对您的docker exec执行相同的操作,并尝试将结果输出到/usr/local/src/scores.txt并报告该目录不存在(在主机上,而不在容器上)。

关于docker - Docker exec printf没有给出此类文件或目录错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37929190/

10-16 23:53