中断符号链接的Shell脚本文件存在性测试失败
此Bourne shell脚本无法检测到中断符号链接的存在。它返回中断符号链接的Shell脚本文件存在性测试失败,shell,sh,symlink,Shell,Sh,Symlink,此Bourne shell脚本无法检测到中断符号链接的存在。它返回false,并且不回显,但/usr/bin/firefox.real是一个存在但作为断开的符号链接的文件。为什么? FIREFOX="/usr/bin/firefox.real" [ -e "$FIREFOX" ] && echo "exists" 使用-h检查是否存在链接(即使已断开): 根据人工测试: -h FILE FILE exists and is a symbolic lin
false
,并且不回显,但/usr/bin/firefox.real
是一个存在但作为断开的符号链接的文件。为什么?
FIREFOX="/usr/bin/firefox.real"
[ -e "$FIREFOX" ] && echo "exists"
使用-h
检查是否存在链接(即使已断开):
根据人工测试
:
-h FILE
FILE exists and is a symbolic link (same as -L)
原因是在内部,当您使用-e进行测试时,bash将调用fstat(),而不是lstat(),因此它将检查文件本身,而不是符号链接。谢谢!这个答案一针见血。它是针对bash的还是同样适用于Bourne shell(我感兴趣的shell)?谢谢您的回复。虽然它提供了测试链接的正确方法,但它并不能完全回答我提出的问题。
-h FILE
FILE exists and is a symbolic link (same as -L)