【疑难问题】关于shell 将文件中命令重定向到标准输入中执行的问题

发布于 2022-09-12 23:10:40 字数 1242 浏览 16 评论 0

有下面的命令

echo "开始构建rabbitmq镜像集群,进入rabbitmq1执行镜像配置脚本"

docker exec -i rabbitmq1 /bin/bash < mirror.conf

通过将mirror.conf中的命令重定向到/bin/bash执行,它的效果和echo "xxx" | docker exec -i rabbitmq1 一样,只是写在文件中会更加清楚

mirror.conf中的脚本命令

echo "创建virtual hosts 命名为/vh_test..."

rabbitmqctl add_vhost /vh_test                                                                                                 
echo "创建用户yingzuidou..."
rabbitmqctl add_user yingzuidou yingzuidou                                                                                     
echo "给用户yingzuidou管理员标签..."

rabbitmqctl set_user_tags yingzuidou administrator                                                                             
echo "给用户在/vh_test上授权..."

rabbitmqctl set_permissions --vhost /vh_test yingzuidou ".*" ".*" ".*"                                                         
echo "配置同步策略..."
rabbitmqctl set_policy --vhost /vh_test mirror_policy "^cluster*" '{"ha-mode": "all", "ha-sync-mode": "automatic"}' 

很奇怪的是上面的命令只能执行两行(echo 和rabbitmqctl add_vhost /vh_test),其他无法执行,经过试验发现一些简单的如rm -rf 和mkdir命令是可以通过回车的方式一行一行将命令分开且这些命令都会被执行,而使用到上面的命令却无法执行,需要移除回车写成一行才行

shell脚本初学者一枚,实在很困惑,实验了一番还是无解,求大佬们指点

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不甘平庸 2022-09-19 23:10:40

docker exec -i -v $(pwd)/mirror.conf:mirror.conf rabbitmq1 /bin/bash mirror.conf

先映射到容器后,再执行。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文