bash - 存储变量内文件的绝对路径

时间:2017-03-08 10:33:00

标签: bash variables path absolute

我正在试图找出原因

  

[-d~ / dir]; echo $?

确实返回0,如果dir存在并且是目录,但是

  

DIR =“〜/ dir”; [-d“$ {DIR}”]; echo $?

始终返回1.

  

echo“$ {DIR}”

按预期打印〜/ dir 。我收到一个文本文件,其中包含另一个文件的路径,并认为我会使用cat将内容存储在变量中。这样做的正确方法是什么?

3 个答案:

答案 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”可以正常工作。