zoukankan      html  css  js  c++  java
  • Shell获取当前路径

    PRG="$0"
    
    while [ -h "$PRG" ]; do
      ls=`ls -ld "$PRG"`
      link=`expr "$ls" : '.*-> (.*)$'`
      if expr "$link" : '/.*' > /dev/null; then
        PRG="$link"
      else
        PRG=`dirname "$PRG"`/"$link"
      fi
    done
    
    PRGDIR=`dirname "$PRG"`
    
    [ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
    
    
    echo "catalina_home is $CATALINA_HOME";
    #此处的RPG抓取的是文件名,因为可能是符号链接,所以循环语句的作用就是找到文件真实源路径
    -h 用来判断$PRG文件是否存在并且是一个符号链接
    ls -ld "$PRG" 查看运行程序的当前目录的详细信息,只是目录,不包括目录下的子目录和文件

    link=`expr "$ls" : '.*-> (.*)$'` 中
    expr 表示要根据某个模式去匹配字符串并返回所匹配到的字符串
    或根据某个模式去计算匹配到的字符数。使用方式一般为: expr value : expression


    "$ls" 表示取变量 ls 中的内容。


    '.*-> (.*)$' 这部分是一个正则表达式, .* 部分表示任意字符, -> 是实际的两个字符, Linux 中的软链接会在使用 ls -al 命令列出文件的时候,以 "软链接 -> 真实文件" 的方式显示出软链接与其所链接的真实文件。$ 在这里表示行结束 ( 就是 (, 因为 ( shell 中属于特殊符号, 所以需要使用转义; ) 同样是转义为 ) ;

    整个 `expr "$ls" : '.*-> (.*)$'` 就表示取到软连接的真实文件或真实目录。

    [ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/nullpwd` 判断变量$CATALINA_HOME是否存在,不存在则给予附值
     
  • 相关阅读:
    2020年9月29日
    随机生成验证码
    动手动脑java语法基础
    Java语法之动手实验
    代码大全2 读书笔记
    java动手动动脑之字串联接
    二柱子问题
    生成随机四则运算1
    可变参数
    2020年9月30日
  • 原文地址:https://www.cnblogs.com/boshen-hzb/p/6080115.html
Copyright © 2011-2022 走看看