加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 在与当前脚本相同的目录中运行脚本

发布时间:2020-12-15 19:02:42 所属栏目:安全 来源:网络整理
导读:我在同一个文件夹中有两个Bash脚本(由下载整个存储库的用户保存在某处): script.sh由用户运行 helper.sh是必需的,由script.sh运行 这两个脚本应位于同一目录中.我需要第一个脚本来调用第二个脚本,但有两个问题: 了解当前的工作目录对我来说没用,因为我不知
我在同一个文件夹中有两个Bash脚本(由下载整个存储库的用户保存在某处):

> script.sh由用户运行
> helper.sh是必需的,由script.sh运行

这两个脚本应位于同一目录中.我需要第一个脚本来调用第二个脚本,但有两个问题:

>了解当前的工作目录对我来说没用,因为我不知道用户是如何执行第一个脚本的(可能是/usr/bin/script.sh,带有./script.sh,或者它可能与../Downloads/repo/scr/script.sh)
>在调用helper.sh之前,脚本script.sh将更改为其他目录.

我绝对可以通过在一个变量中存储the current directory来实现这一点,但是这个代码看起来很复杂,我认为这是一个非常常见和简单的任务.

有没有一种标准的方法可以在script.sh中可靠地调用helper.sh?并且可以在任何支持Bash的操作系统中使用吗?

由于$0保存了正在运行的脚本的完整路径,因此您可以使用 dirname来获取脚本的路径:
#!/bin/bash

script_name=$0
script_full_path=$(dirname "$0")

echo "script_name: $script_name"
echo "full path: $script_full_path"

所以,如果您将它存储在/tmp/a.sh中,那么您将看到如下输出:

$/tmp/a.sh
script_name: /tmp/a.sh
full path: /tmp

所以

  1. Knowing the current working directory is useless to me,because I don’t know how the user is executing the first script (could be with
    /usr/bin/script.sh,with ./script.sh,or it could be with
    ../Downloads/repo/scr/script.sh)

使用dirname“$0”将允许您跟踪原始路径.

  1. The script script.sh will be changing to a different directory before calling helper.sh.

同样,由于你有$0的路径,你可以回到它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读