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

macOS下Bash脚本波浪号未展开,文档目录创建失败求助

Bash脚本中波浪号~未展开的问题解决

问题根源

  1. 波浪号的展开规则限制:Bash只会在~未被引号包裹的场景下,将其解析为用户主目录(即$HOME对应路径)。你用双引号把整个路径包起来,~会被当作普通字符处理,脚本会尝试创建一个名为~的目录下的子路径,这显然不存在,导致执行失败。
  2. 冗余的子命令写法:$(mkdir -p "$dmg_dir")属于多余写法,mkdir是直接执行的命令,不需要用子命令语法捕获输出,直接运行mkdir -p "$dmg_dir"即可。

修正方案

方案一:让~先展开,再处理带空格的目录名

让~处于无引号环境完成解析,再用引号或转义处理空格部分:

dmg_dir=~/Documents/"My dir"
# 也可以写成:dmg_dir=~/Documents/My\ dir

mkdir -p "$dmg_dir"

方案二:用$HOME替代~(更推荐)

$HOME是环境变量,在双引号中能正常展开为用户主目录,写法更严谨:

dmg_dir="$HOME/Documents/My dir"

mkdir -p "$dmg_dir"

内容的提问来源于stack exchange,提问作者c00000fd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 17:10:06