我正在尝试检查 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
但是,这是行不通的。如果 ‘!’ 被排除在外,它永远不会触发。而如果 ‘!’ 在那里,它每次都会触发。
-L如果“文件”存在并且是符号链接(链接的文件可能存在也可能不存在),则返回 true。您想要-f(如果文件存在并且是常规文件则返回true)或者只是-e(如果文件存在则返回true,无论类型如何)。
-L
-f
-e
根据GNU 手册页,-h与 相同-L,但根据BSD 手册页,不应该使用它:
-h
-h file 如果文件存在并且是符号链接,则为真。保留此运算符是为了与此程序的先前版本兼容。不要依赖它的存在;改用 -L 。
-h file