这是我正在研究的bash脚本:
dir="~/path/to/$1/folder"
if [ -d "$dir" ]; then
# do some stuff
else
echo "Directory $dir doesn't exist";
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
当我从终端运行它时:
> ./myscript.sh 123 Directory ~/path/to/123/folder doesn't exist
但该文件夹显然确实存在.这通常有效:
> ls ~/path/to/123/folder
我究竟做错了什么?
问题是执行的bash shell参数置换前波浪线扩展,因此它替换后~/path/to/folder的$dir,它并不试图扩大~,因此它会寻找与它波浪线,这当然是不存在的字面命名的目录.有关bash扩展的更详细说明,请参阅bash手册的第3.5节.