场景应该是这样的:

命令行获取文件所在路径,怎么办?

  1. cd 到文件目录,2 pwd 输出。

那么在 .sh 脚本执行时,怎么获取到该脚本的绝对路径呢?

使用dirname{BASH_SOURCE[0]}

dirname:获取指定路径的目录部分。

(base) ➜  Downloads dirname /Users/mac/Downloads/demo.sh
/Users/mac/Downloads

{BASH_SOURCE[0]} 会拿到该脚本执行是使用的 path。

#!/bin/bashecho  ${BASH_SOURCE[0]}
echo $0
(base) ➜  Downloads sh /Users/mac/Downloads/demo.sh
/Users/mac/Downloads/demo.sh
/Users/mac/Downloads/demo.sh

那怎么在脚本执行时,在里面获取到脚本所在的目录?

思路:

  1. 获取到脚本文件的路径。
  2. 获取到脚本文件所在的目录。
  3. cd 进入,再 pwd。

最终的命令:

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

测试:

#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo $DIR

结果:

(base) ➜  Downloads sh demo.sh
/Users/mac/Downloads

在shell 脚本中获取该脚本的所在目录相关推荐

  1. shell脚本中获取当前所在目录地址

    shell脚本中获取当前所在目录如下 #!/bin/bashwork_path=$(dirname $0) cd ${work_path} work_path=$(pwd) cd ${work_pat ...

  2. Shell脚本中获取命令运行结果、特殊变量使用、条件判断等常用操作

    文章目录 前言 获取命令执行结果 使用反引号 `` ` ``command `` ` ``来执行命令 使用括号组合 $(command) 来执行命令 两种方式的区别 特殊变量使用 $0 $1 $2 . ...

  3. Shell中获取当前脚本的绝对路径: $( cd “$( dirname “${BASH_SOURCE[0]}“ )“ pwd)

    Shell中获取当前脚本的绝对路径:  $( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd) 参考链 ...

  4. linux shell 获取当月第一天与最后一天,扣丁学堂Linux培训简述在shell脚本中获取上个月最后一天的日期方法...

    本篇文章扣丁学堂Linux培训小编给读者们分享一下在shell脚本中获取上个月最后一天的日期方法,对Linux开发感兴趣的小伙伴就随小编来了解一下吧,希望对小伙伴们有所帮助. Linux中用date命 ...

  5. centos7 shell 获取ip_Linux Shell脚本中获取本机ip地址方法

    方法一:ifconfig -a ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "a ...

  6. Shell脚本中获取本机ip地址,Linux获取本地ip地址

    在 Shell 脚本中获取本机 IP 地址可以通过多种方式实现,这里介绍三种常用的方法: 1. 使用 ifconfig 命令获取本机 IP 地址 ifconfig 命令可以获取本机网卡的配置信息,包括 ...

  7. java jsch shell_仅在JSch shell通道中获取特定命令的输出

    我试图在使用JSch的java中获取shell脚本的输出.执行sudo管理命令并获取脚本的输出.仅在JSch shell通道中获取特定命令的输出 Properties prop = new Prope ...

  8. .Net 中 获取当前应用程序启动目录的几个方法和Path.Combine 细节

    一. .Net 中 获取当前应用程序启动目录的几个方法 AppDomain.CurrentDomain.BaseDirectory  代表的是程序集所在的目录,它具有读取和写入的属性. AppDoma ...

  9. shell获取脚本本身名称_linux,shell脚本中获取脚本的名字,使用脚本的名字。

    需求描述: 写shell脚本的过程中,有时会需要获取脚本的名字,比如,有的时候,脚本 中会有usage()这种函数,可能就会用到脚本的名字. 实现方法: shell脚本中,通过使用$0就可以获取到脚本 ...

最新文章

  1. c 初始化char**_CC++|指针详述及实例分析
  2. HBase简单代码实例(Java)
  3. mysql递归查询所有上下节点_【转】MySQL之Spider存储引擎原理详解
  4. 多模光纤收发器的应用领域及适用领域
  5. dfa2.java 原理_DFA编程练习2
  6. 1 数列分块入门_怎样用通俗易懂的语言让小学 OIer 理解并能初步运用线段树?...
  7. 谈谈数据模型、领域模型、视图模型和命令模型
  8. 最小二乘方法和RANSAC的改进算法PROSAC和LMEDS
  9. vector理解一波~~~
  10. Excel文件计算机一级,计算机一级excel操作练习题文件
  11. nmap命令的安装及用法
  12. 锋利的jQuery--Ajax(读书笔记四)
  13. CefSharp如何获取请求响应头Headers中的数据
  14. 使用get传参的时候,参数在后头获取不到或者出现别的错误。
  15. 博弈论(Game Theory)入门——完全信息静态博弈
  16. jsp+servlet搭建在线投票问卷系统
  17. Linux配置SVN 服务端
  18. 【XJTUSE 计算机组成与结构笔记】第十三章 精简指令集计算机
  19. html源码里面写current,HTML Video currentTime用法及代码示例
  20. 磁力机航向角计算与补偿

热门文章

  1. 源火星球——青龙 详细教程
  2. 微电影制作迅速走红的原因
  3. C语言%d、%c与%hhd的区别,%p与%x的区别
  4. 湖南中医药大学OJ—1140到1149
  5. 《C++ primer》(第5版) chapter9 读书笔记
  6. Excel排序 九度教程第4题
  7. Java设计模式 建造者模式
  8. linux su命令_Linux Su命令示例教程
  9. 进阿里了——分享一波进大厂经验
  10. 2006求奇数的乘积c++