• ln -s软链接文件算文件吗


    场景:

    开发A在windows环境下完成了开发,配置管理员cm搭建jenkins在centos环境下编译,cm编译失败,但是开发A在他的windows环境下可以编译过,最后发现是某几个so文件的软链接方式不一样导致的,在linux上编译,需要重新使用ln -s 来设置软链接,此处,我们不关注windows是如何设置软链接的。

    此时比如/root/third/目录下有文件:

    libffpeg.so

    libffpeg.so.12.11

    其中libffpeg.so是软链接,软链接的原始文件是libffpeg.so.12.11,如果直接执行ln -s libffpeg.so.12.11 libffpeg.so 会直接报错libffpeg.so已经存在,必须删除以后才能执行成功,此时,shell脚本,我们会这样写:

    #!/bin/sh
    if [ -f libffpeg.so ] ; then
        rm libffpeg.so
        ln -s libffpeg.so.12.11 libffpeg.so
    fi

    你会发现这个if完全没有执行,我们用的是 “ -f ”参数来判断这个软链接文件是否存在,那么软链接文件是不是一个文件呢,其实软链接文件不能说是一个文件,只能算一种符号链接,所以使用“-f ” 来判断文件是不行的,应该使用 “ -L”来判断指定的是否为符号链接,正确的写法如下:

    #!/bin/sh
    if [  -L libffpeg.so ] ; then
        rm libffpeg.so
        ln -s libffpeg.so.12.11 libffpeg.so
    fi

    结果显示如下:

    参考 if的条件判断如下:

    -d :判断指定的是否为目录
    -z:判断指定的变量是否存在值
    -f:判断指定的是否为文件
    -L:判断指定的是否为符号链接
    -r:判断指定的是否可读
    -w:判断指定的是否可写
    -x:判断存在的对象是否可以执行
    !:测试条件的否定符号 

  • 相关阅读:
    Java中的变量
    Java是什么
    leetcode 75. 颜色分类
    leetcode 283. 移动零
    剑指 Offer 65. 不用加减乘除做加法
    剑指 Offer 53
    剑指 Offer 58
    剑指 Offer 58
    剑指 Offer 57
    剑指 Offer 57. 和为s的两个数字
  • 原文地址:https://www.cnblogs.com/zndxall/p/10790914.html
Copyright © 2020-2023  润新知