检查符号链接是否损坏或不存在

Fre*_*edo 3 shell-script symlink test

尝试创建一个if语句来检查文件是否是有效的符号链接(意味着它也存在)。

我试过:

[ -h "$1" -a ! -e "$1" ]
Run Code Online (Sandbox Code Playgroud)

...但这不起作用。如果文件不是有效的符号链接,或者根本不存在,我想执行代码。

Kus*_*nda 7

如果中的名称$1是有效的符号链接,则-e测试为真。如果它是损坏的符号链接,则-e测试将失败。$1如果 in 中的名称根本不存在,则测试也会失败。

因此,要测试$1符号链接是否损坏,或者根本不存在,使用就足够了

if [ ! -e "$1" ]; then ...; fi
Run Code Online (Sandbox Code Playgroud)

您的测试最好不使用已弃用的 -a内容来编写

if [ ! -e "$1" ] && [ -h "$1" ]; then ...; fi
Run Code Online (Sandbox Code Playgroud)

这测试$1现有的符号链接是否已损坏。

您想测试有效的符号链接吗,请使用

if [ -e "$1" ] && [ -h "$1" ]; then ...; fi
Run Code Online (Sandbox Code Playgroud)