bash - 将文件的绝对路径存储在变量中
bash - storing absolute path to a file inside a variable
我想知道为什么
[ -d ~/dir ] ; echo $?
确实returns0,如果dir存在并且是一个目录,但是
DIR="~/dir" ; [ -d "${DIR}" ] ; echo $?
总是returns 1.
echo "${DIR}"
打印 ~/dir,正如预期的那样。我得到了一个包含另一个文件路径的文本文件,我想我会使用 cat 将内容存储在一个变量中。执行此操作的正确方法是什么?
波浪号扩展发生在变量扩展之前,请参阅 man bash
中的 EXPANSION。 ~
不是真实路径,它被 shell 扩展为真实路径,但存储在变量中的路径不会发生这种情况。而是将真正的完整路径存储在变量中。
不是真正的 bash 解决方案,但您可以这样做:
DIR="~/dir" ;
#expand the tilde
DIR=$(python -c "import os;print(os.path.expanduser('${DIR}'));");
[ -d "${DIR}" ] ; echo $?
DIR = "$HOME/dir" 可以正常工作。
我想知道为什么
[ -d ~/dir ] ; echo $?
确实returns0,如果dir存在并且是一个目录,但是
DIR="~/dir" ; [ -d "${DIR}" ] ; echo $?
总是returns 1.
echo "${DIR}"
打印 ~/dir,正如预期的那样。我得到了一个包含另一个文件路径的文本文件,我想我会使用 cat 将内容存储在一个变量中。执行此操作的正确方法是什么?
波浪号扩展发生在变量扩展之前,请参阅 man bash
中的 EXPANSION。 ~
不是真实路径,它被 shell 扩展为真实路径,但存储在变量中的路径不会发生这种情况。而是将真正的完整路径存储在变量中。
不是真正的 bash 解决方案,但您可以这样做:
DIR="~/dir" ;
#expand the tilde
DIR=$(python -c "import os;print(os.path.expanduser('${DIR}'));");
[ -d "${DIR}" ] ; echo $?
DIR = "$HOME/dir" 可以正常工作。