小编典典

如何检查符号链接是否存在

all

我正在尝试检查 bash 中是否存在符号链接。这是我尝试过的。

mda=/usr/mda
if [ ! -L $mda ]; then
  echo "=> File doesn't exist"
fi


mda='/usr/mda'
if [ ! -L $mda ]; then
  echo "=> File doesn't exist"
fi

但是,这是行不通的。如果 ‘!’ 被排除在外,它永远不会触发。而如果 ‘!’ 在那里,它每次都会触发。


阅读 113

收藏
2022-05-23

共1个答案

小编典典

-L如果“文件”存在并且是符号链接(链接的文件可能存在也可能不存在),则返回
true。您想要-f(如果文件存在并且是常规文件则返回true)或者只是-e(如果文件存在则返回true,无论类型如何)。

根据GNU 手册页-h与 相同-L,但根据BSD
手册页
,不应该使用它:

-h file 如果文件存在并且是符号链接,则为真。保留此运算符是为了与此程序的先前版本兼容。不要依赖它的存在;改用 -L 。

2022-05-23