博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shell获取当前路径
阅读量:5016 次
发布时间:2019-06-12

本文共 994 字,大约阅读时间需要 3 分钟。

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"  fidonePRGDIR=`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/null; pwd` 判断变量$CATALINA_HOME是否存在,不存在则给予附值
 

转载于:https://www.cnblogs.com/boshen-hzb/p/6080115.html

你可能感兴趣的文章
MVC案例——删除操作
查看>>
Timer和TimerTask的使用--2
查看>>
UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等)
查看>>
FileUpload1.PostedFile.FileName 获取的文件名
查看>>
Mock InjectMocks ( @Mock 和 @InjectMocks )区别
查看>>
如何获取免版权图片资源
查看>>
MySql避免全表扫描【转】
查看>>
Storm学习笔记二
查看>>
windows 中的类似于sudo的命令(在cmd中以另一个用户的身份运行命令)
查看>>
java===单类设计模式之饿汉式与懒汉式
查看>>
BZOJ 1083: [SCOI2005]繁忙的都市
查看>>
Maven 编译
查看>>
《学习之道》第十章学习方法29还记得散步的好处嘛
查看>>
Git常用命令总结
查看>>
iOS获取设备IP地址
查看>>
JavaSE| String常用方法
查看>>
NRF51822配对绑定要点
查看>>
C语言博客作业—数据类型
查看>>
angularjs学习笔记
查看>>
Runtime.getRuntime().exec()需要注意的地方
查看>>