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是否存在,不存在则给予附值
 
时间: 2024-10-22 10:37:51

Shell获取当前路径的相关文章

【linux】shell代码,获取当前路径,创建文件夹

#!/bin/bash CURRENT_PATH=`dirname $0` cd $CURRENT_PATH MY_LOG=/var/log MY_DB=/var/lib/db [ ! -d $MY_LOG ] && mkdir -p ${MY_LOG} [ ! -d $MY_DB ] && mkdir -p ${MY_DB} 代码如上,注意 dirname $0 可以获取当前路径 [ ! -d $MY_LOG ] && mkdir -p ${MY_LOG}

C# 获取当前路径方法(转)

C# 获取当前路径方法 //获取包含清单的已加载文件的路径或 UNC 位置. public static string sApplicationPath = Assembly.GetExecutingAssembly ( ).Location; //result: X:\xxx\xxx\xxx.dll (.dll文件所在的目录+.dll文件名) //获取当前进程的完整路径,包含文件名(进程名). string str = this.GetType ( ).Assembly.Location; /

python执行shell获取硬件参数写入mysql

最近要获取服务器各种参数,包括cpu.内存.磁盘.型号等信息.试用了Hyperic HQ.Nagios和Snmp,它们功能都挺强大的,但是于需求不是太符,亦或者太heavy. 于是乎想到用python执行shell获取这些信息,python执行shell脚本有以下三种方法: 1. os.system() os.system('ls')#返回结果0或者1,不能得到命令的输出 2. os.popen() output = os.popen('ls') print output.read()#打印出的

shell获取进程ID的方法: pidof | pgrep | ps-A+grep+awk

shell获取进程ID的方法: 我知道和实践过的有这么三种: ps -A |grep "cmdname"| awk '{print $1}' pidof "cmdname" pgrep "cmdname" 这三种在bash和busybox ash里面的运行结果稍有不同, 第一种完全相同,但是因为调用命令次数较多,性能上是不行的. 第二种: pidof 只能获取程序的文件名匹配到的进程号,在ash中 比如 pidof "usr/bin/t

python获取当前路径

转自:http://www.cnblogs.com/wind-wang/p/5822192.html python获取当前路径 import os,sys 使用sys.path[0].sys.argv[0].os.getcwd().os.path.abspath(__file__).os.path.realpath(__file__) sys.path是Python会去寻找模块的搜索路径列表,sys.path[0]和sys.argv[0]是一回事因为Python会自动把sys.argv[0]加入

总结C#获取当前路径的7种方法(转载)

总结C#获取当前路径的7种方法 C#获取当前路径的方法如下: 1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName -获取模块的完整路径. 2. System.Environment.CurrentDirectory -获取和设置当前目录(该进程从中启动的目录)的完全限定目录. 3. System.IO.Directory.GetCurrentDirectory() -获取应用程序的当前工作目录.这个不一定是程

C# WinForm获取当前路径汇总

Winform获取应用程序的当前路径的方法集合,具体如下,值得收藏//获取当前进程的完整路径,包含文件名(进程名).string str = this.GetType().Assembly.Location; result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)//获取新的Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名(进程名).string str = System.Diagnostics.Process.GetCurr

【转】java获取当前路径的几种方法

1.利用System.getProperty()函数获取当前路径: System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径 2.使用File提供的函数获取当前路径: File directory = new File("");//设定为当前文件夹 try{     System.out.println(directory.getCanonicalPath());//获取标准的路径  

Shell 获取参数的方式

写shell脚本的时候,往往需要从外部获取参数,例如: $ sh demo.sh a 那么如何将上面的参数a传到shell程序里面呢. 最常用的是,$0 $1... $10,这些位置变量 其中$0是shell程序的名字,$1,$2...分别为第一个参数,第二个参数... 我们demo.sh 如下所示: $ cat demo.sh #! /bin/bash cat << EOF Usage: sh $0 $1 EOF $ sh demo.sh a Usage: sh demo.sh a $开头的