我有一条有空间的路径
my_path = "/some/path with/space"
我需要将此路径传递给docker
docker run --rm --mount source=$my_path,target=$some_other_path,type=bind
但它不起作用。它说没有路径/some/path
。
我也试过了:
my_path = "/some/path\ with/space"
my_path = "'/some/path with/space'"
它们也不起作用
答案1
这不是变量赋值的问题,你做得对。而是你使用它的方式。
这:
my_path = "/some/path with/space"
docker run --rm --mount source=$my_path,target=$some_other_path,type=bind …
替换后将会变成这样:
docker run --rm --mount source=/some/path with/space,target=/some/other/path,type=bind …
docker
您需要在调用期间引用命令的参数:
docker run --rm --mount "source=$my_path,target=$some_other_path,type=bind" …
或者只引用变量。Bash 会合并相邻的字符串(无论是否引用)。
docker run --rm --mount source="$my_path",target=$some_other_path,type=bind …
答案2
像这样使用
docker run --rm --mount 源="""$my_path""",目标="""$some_other_path""",type=bind