shell获取当前执行脚本的路径和文件名
shell获取当前执行脚本的路径和文件名的方法
$0:传递到脚本的第一个参数
${BASH_SOURCE}:当前执行脚本的文件名
${BASH_SOURCE[0]}:等价于${BASH_SOURCE},当前执行脚本的文件名
$(dirname path):获取path中的路径,并删除最后的文件名
$(realpath file):获取file的绝对路径
其中$0可用于sh或bash,${BASH_SOURCE}只可用于bash。
但是当脚本以source方式执行时,$0失效,此时只能使用${BASH_SOURCE}
示例,脚本存放路径为/tmp/aaa
/tmp/aaa# tree /tmp/aaa/
/tmp/aaa/
`-- test.sh
#!/bin/bashecho $0
echo ${BASH_SOURCE}
echo ${BASH_SOURCE[0]}echo $(dirname $(realpath $0))
echo $(dirname $(realpath ${BASH_SOURCE}))
echo $(dirname $(realpath ${BASH_SOURCE[0]}))
以./方式执行的输出
/tmp/aaa# ./test.sh
./test.sh
./test.sh
./test.sh
/tmp/aaa
/tmp/aaa
/tmp/aaa
以source 方式执行的输出
/tmp/aaa# source test.sh
-bash
test.sh
test.sh
realpath: invalid option -- 'b'
Try 'realpath --help' for more information.
dirname: missing operand
Try 'dirname --help' for more information./tmp/aaa
/tmp/aaa
shell获取当前执行脚本的路径和文件名相关推荐
- shell获取当前执行脚本的路径
filepath=$(cd "$(dirname "$0")"; pwd) 脚本文件的绝对路径存在了环境变量filepath中,可以用 echo $filepa ...
- linux shell获取当前执行路径
linux shell 获取当前正在执行脚本的绝对路径 basepath=$(cd `dirname $0`; pwd) project_path=$(cd `dirname $0`; pwd) pr ...
- Shell获取某个文件夹下的所有文件名(含文件夹)
2019独角兽企业重金招聘Python工程师标准>>> 1. 获取某个文件夹下的所有文件名(含文件夹),并显示 #!/bin/sh #============ get the fil ...
- C#调用Power Shell 管理Office365 执行脚本时遇到的问题
Power Shell管理Office参考http://www.mamicode.com/info-detail-494553.html C#调用Power Shell 参考 https://www. ...
- php 命令执行脚本文件路径,php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法...
在php命令行下执行.php文件时,执行环境的工作目录(getcwd( ))是php命令程序(php.exe)所在目录,所以如果想在文件内使用相对路径时,要先切换当前的工作目录才行. 小测试程序: $ ...
- shell 获取命令执行结果_java高并发系列 第31天:获取线程执行结果,这6种方法你都知道?...
这是java高并发系列第31篇. 环境:jdk1.8. java高并发系列已经学了不少东西了,本篇文章,我们用前面学的知识来实现一个需求: 在一个线程中需要获取其他线程的执行结果,能想到几种方式?各有 ...
- java执行python路径_如何在Python中获取当前执行文件的路径?
您无法直接确定正在执行的主脚本的位置 . 毕竟,有时脚本根本不是来自文件 . 例如,它可以来自交互式解释器或仅存储在存储器中的动态生成的代码 . 但是,您可以可靠地确定模块的位置,因为模块始终从文件加 ...
- java获取当前执行文件的路径
需要知道执行jar包时,jar包所在的路径. 开始使用了 p.getClass().getResource("/").getPath(); 结果在IDE里面使用是好的,但是在命令行 ...
- 查看linux中的sh指向哪,什么是Linux的Shell脚本和怎么执行脚本?
1.什么是Shell?shell shell是外壳的意思,就是操做系统的外壳.咱们能够经过shell命令来操做和控制操做系统,好比Linux中的Shell命令就包括ls.cd.pwd等等.总结来讲,S ...
最新文章
- servlet之控制分发
- 从Python调用外部命令
- vba oracle 01019,Oracle 客户端连接时报ORA-01019错误总结
- mysql or 创建索引_Mysql索引优化
- 工作思想的转变_转变成以员工为中心的工作场所的3个技巧
- 【第1课 项目愿景】PMP敏捷精讲第五章:项目立项 1/4-科科过PMP
- 真切还是虚无?宇宙可能是一个假真空气泡
- python编写程序输出诗句_python基于词向量的古诗生成器
- 【docker-ce】k8s集群docker容器异常重启问题分析
- 模拟小白:挑战23天JAVA程序设计从入门到精通第一天
- 输入单号查快递:如何用快递单号查询快递信息
- 多摩川绝对值编码器CPLD FPGA通信源码(VHDL格式+协议+说明书)
- Java抽象类方法和抽象类
- win10 任务栏图标左击无效,右击有效的处理办法
- 失无所失的伤感空间日志分享:我会一直这样爱着你,心甘情愿
- OC正式协议和非正式协议的区别
- 怎么禁用Windows 10 自动更新驱动程序
- Android-audio playback/record Monitor
- flutter web application upload image
- cytoscape.js进阶篇
热门文章
- Introducing the Ultimate Comfort Solution: ComfiLife Gel Enhanced Seat Cushion
- mysql级联删除报1451 - Cannot delete or update a parent row: a foreign key constrain
- android仿喜马拉雅APP状态栏,源码分享:高仿喜马拉雅FM
- 什么是RPC?RPC与Stub简述
- 斯坦福大学新课CS224W-2019-图网络机器学习算法-视频及ppt资源分享
- PostgreSql 分区表
- 【牛客网OJ题】人民币转换
- 怎样解决张力控制的难点?
- 海康威视多摄像头实时视频预览(基于SDK的二次开发)
- 2020 Vue 基于Element-UI开发 手动导入并使用Timeline组件(附组件文件)查看快递信息