如何在read命令中正确使用反斜杠处理rclone多词文件夹路径问题
问题解决方法
问题根源
这是Shell默认的单词拆分机制导致的参数解析错误:
- 未用双引号包裹变量时,Shell会将变量值中的空格、制表符等作为分隔符,把内容拆分为多个独立参数传递给命令,因此你输入的
One Folder会被拆成One、Folder/两个参数,加上目标路径一共3个参数,不符合rclone copy的参数要求。 - 手动输入反斜杠转义无效的原因是,
read -r会将你输入的反斜杠作为普通字符存入变量,执行时依然会触发单词拆分。
修复方案
只需要给脚本中的变量统一加上双引号,就能让Shell把整个变量值识别为单个完整参数:
- 首先修正你脚本中写错的shebang行,原
#!bin/sh缺少根路径斜杠,应为#!/bin/sh - 给
rclone copy命令中的所有变量用双引号包裹
修改后的完整脚本
#!/bin/sh #upload echo "Folder Name:" read -r folder echo "File Name:" read -r name rclone copy "${folder}/" "Drive:SomeFolder/${name}"
使用说明
运行脚本后直接输入带空格的文件夹名即可,无需手动加反斜杠转义空格,双引号会自动处理空格的参数传递问题。
内容的提问来源于stack exchange,提问作者JohnTM
相关产品推荐
相关产品推荐

