求助:Automator制作的App无法将含空格文件夹通过mysides添加到Mac侧边栏
解决Automator App中mysides处理带空格路径的问题
问题出在变量未加引号导致参数被空格拆分,以及URL编码不完整这两个点上,以下是修复方案:
问题分析
- 原代码中
basename $f、$s、file://$f都没有用双引号包裹,当路径含空格时,bash会把空格后的内容当成独立参数传递给mysides,导致工具识别错误。 - 仅用sed替换空格为
%20不够全面,macOS路径中可能包含中文、特殊符号等其他需要URL编码的字符,且正确的file URL格式需要确保路径前是file:///(三个斜杠)。
修正代码
用系统自带的Python完成标准URL编码,同时给所有变量加上双引号:
for f in "$@" do s="$(basename -- "$f")" # 用Python进行标准URL编码,生成正确的file://路径 encoded_path=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$f'))") /usr/local/bin/mysides add "$s" "file:///$encoded_path" done
关键改动说明
- 所有变量引用都加上双引号(
"$f"、"$s"、"file:///$encoded_path"),避免空格拆分参数。 - 使用Python的
urllib.parse.quote进行标准URL编码,能处理所有需要转义的字符(空格、中文、特殊符号等),比sed替换更可靠。 - file URL格式改为
file:///(三个斜杠),这是本地文件路径的标准URL格式。
内容的提问来源于stack exchange,提问作者Ghost_Hunter
相关产品推荐
相关产品推荐

