我正在编写一段 Bash 脚本来验证符号链接的正确性。我想要诊断以下情况:
- @symlink损坏了
- @symlink指向另一个@symlink -- (使用符号链接链的最终目标进行修复)
- @symlink指向另一个已损坏的@symlink
- @symlinks链是一个循环
在诊断符号链接指向符号链接时,我对第2点有很大问题。
我尝试使用readlink,但它返回符号链接链的最终目标而不是指向的符号链接名称。我尝试运行它而没有-f
参数,但它并没有帮助。然后,使用find的组合给了我很差的结果...
有人能帮我解决这个问题吗?
下面是我当前版本的代码:
failed=0
for file in path/*
do
if [[ -L "$file" ]]
then
if [[ ! -a "$file" ]]
then
echo "Symlink '$file' is broken -- target object doesn't exists."
failed=1
elif [[ -L "$(readlink -f $file)" ]]
then
echo "Symlink '$file' points to another symlink: '$(readlink $file)'"
failed=1
fi
fi
done
exit $failed
更新
测试文件结构(其中讨论了symlinks.sh bash脚本):
if ...; then
才需要它们。) - Jens