将所有 bash 函数的参数传递给 docker exec 命令?
Pass all bash function's arguments to docker exec command?
我正在尝试在我的容器外创建一个别名,它将在容器内调用一个命令:
CONTAINER="my-container-name"
container_echo() {
docker exec "$CONTAINER" bash -c "echo $@"
}
我看到这个输出:
$ container_echo "this is a test" second third
this is a test
所以这没有正确引用我的参数,它只传递了第一个参数。我也试过 docker exec "$CONTAINER" sh -c "cp \"$@\""
但我收到 Syntax error: Unterminated quoted string
错误。
最好的方法就是:
docker exec "$CONTAINER" echo "$@"
如果你真的想通过 bash -c
做到这一点,你应该 shell 转义每个单词并将它们连接成一个字符串:
docker exec "$CONTAINER" bash -c "echo ${*@Q}"
我正在尝试在我的容器外创建一个别名,它将在容器内调用一个命令:
CONTAINER="my-container-name"
container_echo() {
docker exec "$CONTAINER" bash -c "echo $@"
}
我看到这个输出:
$ container_echo "this is a test" second third
this is a test
所以这没有正确引用我的参数,它只传递了第一个参数。我也试过 docker exec "$CONTAINER" sh -c "cp \"$@\""
但我收到 Syntax error: Unterminated quoted string
错误。
最好的方法就是:
docker exec "$CONTAINER" echo "$@"
如果你真的想通过 bash -c
做到这一点,你应该 shell 转义每个单词并将它们连接成一个字符串:
docker exec "$CONTAINER" bash -c "echo ${*@Q}"