我正在试图找出原因
[-d~ / dir]; echo $?
确实返回0,如果dir存在并且是目录,但是
DIR =“〜/ dir”; [-d“$ {DIR}”]; echo $?
始终返回1.
echo“$ {DIR}”
按预期打印〜/ dir 。我收到一个文本文件,其中包含另一个文件的路径,并认为我会使用cat将内容存储在变量中。这样做的正确方法是什么?
答案 0 :(得分:0)
波浪线扩展发生在变量扩展之前,请参阅man bash
中的EXPANSION。 ~
不是真正的路径,它由shell扩展到真实路径,但对于存储在变量中的路径不会发生。将实际的完整路径存储在变量中。
答案 1 :(得分:0)
不是真正的bash解决方案,但你可以这样做:
DIR="~/dir" ;
#expand the tilde
DIR=$(python -c "import os;print(os.path.expanduser('${DIR}'));");
[ -d "${DIR}" ] ; echo $?
答案 2 :(得分:0)
DIR =“ $ HOME / dir”可以正常工作。