You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本中含空格的路径变量导致rsync无法识别的问题解决

Bash脚本中含空格的路径变量导致rsync无法识别的问题解决

嗨,这个问题我太熟悉了!bash 默认会把空格当作字段分隔符,所以你直接使用带空格的路径变量时,它会把 /My 和 Images/ 当成两个独立的参数传给 rsync,自然找不到正确的文件夹。下面给你几个靠谱的解决办法:

  • 用双引号包裹变量(最推荐)
    给变量赋值和调用变量时都用双引号,这样bash会把整个路径当成一个完整的字符串处理,不会拆分空格。修改后的脚本如下:

    Source="/My Images/"
    Target="/Transfer/Media/"
    rsync -avu --progress "$Source" "$Target"
    

    这个方法通用性最强,不管路径里有空格还是其他特殊字符(比如!、$)都能正确处理。

  • 给空格添加转义符
    在路径的空格前加上反斜杠\,告诉bash这个空格是路径的一部分,不是分隔符:

    Source=/My\ Images/
    Target=/Transfer/Media/
    rsync -avu --progress "$Source" "$Target"
    

    不过如果路径里有多个空格,这种方式会比较繁琐,不如双引号来得方便。

  • 用单引号赋值(注意局限性)
    赋值时可以用单引号包裹路径,单引号里的内容会被bash原样解析,不会拆分空格:

    Source='/My Images/'
    rsync -avu --progress "$Source" "$Target"
    

    但要注意,单引号里的变量不会被bash解析,如果你的路径里包含其他变量(比如$HOME),就不能用单引号了,这时候双引号是更好的选择。

最后给个小提醒:写bash脚本时,涉及路径或字符串变量的地方,尽量都用双引号括起来,能避开大部分类似的空格、特殊字符坑!

备注:内容来源于stack exchange,提问作者RonLat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 07:28:06