【发布时间】:2016-03-19 03:27:59
【问题描述】:
我正在尝试在远程主机上运行 ssh 的 bash 脚本并停止正在运行的单个 docker 容器。
#!/usr/bin/env bash
set -e
ssh <machine> <<EOF
container=$(docker ps | awk 'NR==2' | awk '{print $1;}')
docker stop $container
EOF
但是,我收到以下错误:
stop.sh: line 4: docker: command not found
当我手动执行此操作(ssh 到机器,运行命令)时,一切都很好,但是当我尝试通过脚本执行此操作时,我得到了错误。我想我的命令替换语法不正确,我已经搜索并尝试了各种引号等但无济于事。
谁能指出我哪里出错了?
【问题讨论】:
-
Heredocs 对其内容执行参数扩展,因此您的
$(docker ps ...)和$container评估在代码到达 ssh 的标准输入之前发生。