将所有 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}"