bash – 如何在包含的shell脚本中查找脚本目录
发布时间:2020-12-15 20:59:47 所属栏目:安全 来源:网络整理
导读:我们现在使用dirname和$0查找 shell脚本的目录,但是当脚本包含在另一个脚本中时,这不起作用. 假设有两个文件first.sh和second.sh: /tmp/first.sh: #!/bin/sh. "/tmp/test/second.sh" /tmp/test/second.sh: #!/bin/shecho $0 通过运行first.sh,第二个脚本
我们现在使用dirname和$0查找
shell脚本的目录,但是当脚本包含在另一个脚本中时,这不起作用.
假设有两个文件first.sh和second.sh: /tmp/first.sh: #!/bin/sh . "/tmp/test/second.sh" /tmp/test/second.sh: #!/bin/sh echo $0 通过运行first.sh,第二个脚本也会打印first.sh. second.sh中的代码如何找到自己的目录? (搜索适用于bash / csh / zsh的解决方案) 解决方法
没有任何解决方案可以在所有类型的贝壳中同样有效.
在bash中你可以使用BASH_SOURCE: $(dirname "$BASH_SOURCE") 例: $cat /tmp/1.sh . /tmp/sub/2.sh $cat /tmp/sub/2.sh echo $BASH_SOURCE $bash /tmp/1.sh /tmp/sub/2.sh 如您所见,脚本打印名称为2.sh, 我必须注意,这个解决方案只适用于bash.在Bourne-shell(/ bin / sh)中是不可能的. 在csh / tcsh / zsh中,您可以使用$_而不是BASH_SOURCE. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- bash字符串比较
- Bootstrap3 表格-带边框的表格
- 如何使用shell中的wget / curl在Linux上下载Oracle Java?
- CXF实现webservice (二)
- angular – 与Select / Options和ngModel / ngModelChange一
- AngularJS之道 - Promise编程模式
- JS 组件系列之BootstrapTable的treegrid功能
- AngularJS错误.success不是一个函数
- [博客迁移]探索Windows Azure 监控和自动伸缩系列1 - 连接中
- 基于.net webservices和Flex LineChart组件的动态数据监控