【疑难问题】关于shell 将文件中命令重定向到标准输入中执行的问题
有下面的命令
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
docker exec -i -v $(pwd)/mirror.conf:mirror.conf rabbitmq1 /bin/bash mirror.conf
先映射到容器后,再执行。