shell命令问题请教
我有个shell脚本是这样的 这个脚本的意思是进入docker容器 执行sh /opt/two.sh但实际上执行的话sh /opt/two.sh是不会被执行的 因为执行了 docker exec -it sign /bin/bash 就等于开了个新终端 sh /opt/two.sh 这段代码就丢失了 怎么办呢
#!/bin/bash
docker exec -it sign /bin/bash
sh /opt/two.sh
#!/bin/bash
docker exec -it sign /bin/bash
docker run ubuntu sh -c sh /opt/two.sh
这样呢 学习学习一波 sh 加 -c 就好了
sh 就是bash 如果不需要打开进入sh 是没有必要在第二条加sh的
docker exec -it sign /bin/bash -c "/opt/two.sh" 本帖最后由 zx5706112 于 2022-3-11 11:33 编辑
dockerexec-it sign /bin/bash /opt/two.sh 这样就行啊
#!/bin/bash
docker execsignsh /opt/two.sh
sh命令找不到的话可以改成/bin/sh 试一下 2L 的意思是 重开一个 image是ubuntu 的Container在这个Container下执行/opt/two.sh
PS: 一般会有 Permission denied 要chmod
如果不想chmod 可以这样:
docker exec -it sign /bin/bash -c "/bin/bash /opt/two.sh"
原因是外部(第一个/bin/bash)是没有内部的权限的 echo "sh /opt/two.sh" | docker exec -it sign /bin/bash --stdin可以试试
页:
[1]