如果由 update-alternatives 管理时目录不存在,请检查 bash
我有一条由 update-alternatives 管理的路径。看来这很令人困惑。
以下 if 不应打印 yes。但它确实如此,因为 bash 认为该目录不存在 - 事实上它确实存在。这一切都是以 root 身份完成的,我已经尝试过单括号版本。
RUBY_ROOT=/usr/bin/ruby
CHK_DIR_PATH=`readlink -f "${RUBY_ROOT}"`
if [[ ! -d "${CHK_DIR_PATH}" ]] ; then echo yes; fi
路径确实存在:
ls -la ${CHK_DIR_PATH}
-rwxr-xr-x 1 root root 6993617 2011-06-21 15:37 /usr/bin/ruby1.9.2-p180
是否有其他方法来检查目录是否不存在?
I have a path that is managed by update-alternatives. It seems this is confusing bash.
The following if should not print yes. But it does because bash thinks the directory does not exist - when in fact it does. This is all done as root, and I've tried the single bracket versions.
RUBY_ROOT=/usr/bin/ruby
CHK_DIR_PATH=`readlink -f "${RUBY_ROOT}"`
if [[ ! -d "${CHK_DIR_PATH}" ]] ; then echo yes; fi
The path does exist:
ls -la ${CHK_DIR_PATH}
-rwxr-xr-x 1 root root 6993617 2011-06-21 15:37 /usr/bin/ruby1.9.2-p180
Is there an alternative way to check if a directory does not exist?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
路径存在,但不是目录;根据您的
ls -l
,它是一个文件。因此,test -d
正确返回 false,而test -e
和test -f
将返回 true。我怀疑你有什么东西安装不正确。The path exists, but it's not a directory; according to your
ls -l
, it's a file. Sotest -d
correctly returns false, whereastest -e
andtest -f
would return true. I suspect you have something installed incorrectly.