如何确定sym链接是否存在

时间:2013-06-29 14:30:46

标签: linux bash

我正在尝试确定是否存在符号链接。我认为-L-f会这样做,但似乎没有效果。

VHOST="/etc/apache2/sites-available/vhost.local";
if [ ! -L VHOST ]; then
        ln -s /home/user/Ubuntu\ One/htdocs/vhosts/vhost.local VHOST;
        a2ensite vhost.local;
        echo "  -vhost.local":
fi

如果还没有sym链接,它应该创建sym链接....

1 个答案:

答案 0 :(得分:5)

根据TEST(1)联机帮助页:

   -h FILE
          FILE exists and is a symbolic link (same as -L)
   -L FILE
          FILE exists and is a symbolic link (same as -h)

-h-L应该可以解决问题。但是,您没有针对变量 $VHOST进行测试,而是测试文字VHOST。这是错误。

所以,我想你想说:

if [ ! -L "$VHOST" ]; then
  ...

此外,您忘记ln -s中的$:

ln -s /home/user/Ubuntu\ One/htdocs/vhosts/vhost.local "$VHOST";