Bash 脚本中以空格作为变量的文件路径

Bash 脚本中以空格作为变量的文件路径

我有一条有空间的路径

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

相关内容