我有以下命令可以正常工作并foo
在返回之前打印:
docker exec -i <id> /bin/sh < echo "echo 'foo'"
我想用一个管道将多个命令定向到容器中,例如echo 'foo'
and ls /
。我尝试了以下方法:
- 这失败了,因为它在主机上运行命令并将输出通过管道传输到容器中:
{ echo "foo" ls / } | docker exec -i <id> /bin/sh
这失败了,因为它的语法不好。它也在主机上运行:
{ echo "foo" ls / } | docker exec -i <id> /bin/sh
这个失败了,但我不想使用字符串数组:
for COMMAND in 'echo "foo"' 'ls /' do docker exec -i <id> /bin/sh < echo $COMMAND done
我还尝试了其他几种方法,例如将命令输入tee
orecho
但没有任何运气。如果你想知道我为什么要做这件看似荒谬的事情,那是因为:
- 这是一个简短的脚本,我想将所有内容放在一个地方
- 我想使用语法突出显示,所以我不想将它全部存储在字符串列表中
- 容器有脚本应该运行的程序,而主机没有
- 这是一个自动过程,我想在主机上使用 crontab 触发