可以使用readlink命令必须加上-f参数,readlink用于读取链接文件所指向的文件,这样对于一些建立了软连接的脚本文件的话非常适用,而对于一般的脚本文件需要加上-f参数否则readlink文件不会有输出(如果不加-f参数对一个普通文件适用readlink命令则$?=1)

获取当前执行脚本文件路径

BIN_FILE=$(readlink -f $)

(注意:加了-f参数后,即使参数指定的文件不存在readlink还是会生成一个路径,但是因为执行脚本是$0对应的文件肯定是存在的,不用担心这个问题)

一般来说执行脚本路径获取后,我们接着获取项目的根目录,这样以后的操作中的路径就可以统一了,这里假设目录为project_home/bin/script这样的结构

PROJ_BIN=$(dirname $BIN_FILE)
PROJ_HOME=$(dirname $PROJ_BIN)

dirname可以获取参数中路径的的上一级目录

还可以通过basename获取脚本名称,这个名称只包含除去后缀的文件名部分,可以用于在usage之类的信息中显示

SCRIPT_NAME=$(basename $BIN_FILE)

最新文章

  1. java Future 接口介绍
  2. easyUI 如何不跳转页面,只是加载替换center部分内容
  3. web分享QQ好友、QQ空间、新浪微博的api接口
  4. [BZOJ1856][SCOI2010]字符串(组合数学)
  5. Permutations [LeetCode]
  6. T4 Templates
  7. WebService另一种轻量级实现—Hessian 学习笔记
  8. 八、jdk工具之JvisualVM、JvisualVM之一--(visualVM介绍及性能分析示例)
  9. ARM-Linux配置DHCP自动获取IP地址
  10. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试
  11. java学习——集合框架(Collection,List,Set)
  12. org.hibernate.service.jndi.JndiException: Error parsing JNDI name []
  13. BZOJ 2324 营救皮卡丘
  14. 理解HTTPS
  15. C# 读取PDF多级书签
  16. tomcat配置的环境变量catalina.home和catalina.base 区别
  17. zabbix 配置SNMP监控
  18. 让你的ansible飞起来
  19. leetcode168
  20. UPDATE_ENTITY実行

热门文章

  1. [Swift]遍历字符串
  2. Flutter 1.0 正式版: Google 的便携 UI 工具包
  3. 寻找第K大的数(快速排序的应用)
  4. angluarjs的tab标签
  5. (转)CentOS 7 安装 Python3、pip3
  6. (转)DB2高可用性灾难恢复
  7. Linux下C++开发常用命令
  8. springboot项目:Redis缓存使用
  9. 【开源组件】FastDFS集群搭建与实战
  10. 部署herko小记