ppgjx 发表于 2022-3-11 10:18

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

灿烂的小居 发表于 2022-3-11 10:26

#!/bin/bash
docker exec -it sign /bin/bash
docker run ubuntu sh -c sh /opt/two.sh
这样呢

52smallpig123 发表于 2022-3-11 10:53

学习学习一波

pzx521521 发表于 2022-3-11 11:15

sh 加 -c 就好了
sh 就是bash 如果不需要打开进入sh 是没有必要在第二条加sh的
docker exec -it sign /bin/bash -c "/opt/two.sh"

zx5706112 发表于 2022-3-11 11:24

本帖最后由 zx5706112 于 2022-3-11 11:33 编辑

dockerexec-it sign /bin/bash /opt/two.sh    这样就行啊

hackyun 发表于 2022-3-11 11:25


#!/bin/bash
docker execsignsh /opt/two.sh


sh命令找不到的话可以改成/bin/sh 试一下

pzx521521 发表于 2022-3-11 11:25

2L 的意思是 重开一个 image是ubuntu 的Container在这个Container下执行/opt/two.sh

pzx521521 发表于 2022-3-11 11:27

PS: 一般会有 Permission denied 要chmod
如果不想chmod 可以这样:
docker exec -it sign /bin/bash -c "/bin/bash /opt/two.sh"
原因是外部(第一个/bin/bash)是没有内部的权限的

whh19921024 发表于 2022-3-11 23:48

echo "sh /opt/two.sh" | docker exec -it sign /bin/bash --stdin可以试试
页: [1]
查看完整版本: shell命令问题请教