macOS下Bash脚本波浪号未展开,文档目录创建失败求助
Bash脚本中波浪号~未展开的问题解决
问题根源
- 波浪号的展开规则限制:Bash只会在
~未被引号包裹的场景下,将其解析为用户主目录(即$HOME对应路径)。你用双引号把整个路径包起来,~会被当作普通字符处理,脚本会尝试创建一个名为~的目录下的子路径,这显然不存在,导致执行失败。 - 冗余的子命令写法:
$(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
相关产品推荐
相关产品推荐

