如果由 update-alternatives 管理时目录不存在,请检查 bash

发布于 2024-11-16 10:51:29 字数 445 浏览 3 评论 0原文

我有一条由 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

椵侞 2024-11-23 10:51:29

路径存在,但不是目录;根据您的ls -l,它是一个文件。因此,test -d 正确返回 false,而 test -etest -f 将返回 true。我怀疑你有什么东西安装不正确。

The path exists, but it's not a directory; according to your ls -l, it's a file. So test -d correctly returns false, whereas test -e and test -f would return true. I suspect you have something installed incorrectly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文