【发布时间】:2015-09-30 03:41:57
【问题描述】:
我正在编写一个将目录作为唯一参数的 shell 脚本。在我做任何其他事情之前,我需要检查目录是否存在。该目录可以是绝对的或相对的。我知道我可以使用
检查绝对目录是否存在(例如,/Users/keith/Documents/TestFolder)if [ -d "$1"]; then
# do something if the absolute directory exists
fi
但是,如果工作目录是 /Users/keith/Documents/ 并且我调用我的脚本并仅传递“TestFolder”,那么即使当前工作目录中存在 TestFolder,此 if 语句中的测试也会评估为 false .
我已尝试使用将目录转换为绝对目录
abs_path=`cd "$1"; pwd`
然后使用上面的 if 语句测试绝对路径是否存在。如果传递给脚本的目录确实存在,这工作正常(识别“TestFolder”存在,即使这是我作为参数传递的所有内容),但如果它不存在,那么这将失败。
我需要的是一种方法来确定作为参数传递的目录是否存在,无论它是作为绝对目录传递还是作为相对于用户当前工作目录的目录传递,并且如果目录不存在则不会失败'不存在。
我显然不是 bash 专家 - 任何建议都将不胜感激!
【问题讨论】: