相关疑难解决方法(0)

从脚本本身获取Bash脚本的源目录

如何获取其中的目录路径的Bash脚本位于,里面那个脚本?

例如,假设我想使用Bash脚本作为另一个应用程序的启动器.我想将工作目录更改为Bash脚本所在的目录,因此我可以对该目录中的文件进行操作,如下所示:

$ ./application

directory bash

4672
推荐指数
44
解决办法
158万
查看次数

Unix shell脚本找出脚本文件所在的目录?

基本上我需要使用与shell脚本文件位置相关的路径运行脚本,如何将当前目录更改为脚本文件所在的目录?

unix shell

459
推荐指数
14
解决办法
50万
查看次数

如何检测脚本是否来源

我有一个脚本,exit如果它被采购我不希望它调用.

我想过检查是否$0 == bash但如果脚本来自另一个脚本,或者如果用户从不同的shell中获取它,则会出现问题ksh.

是否有可靠的方法来检测脚本是否来源?

bash ksh

188
推荐指数
9
解决办法
5万
查看次数

在$ 0和BASH_SOURCE之间选择

如何在"$0"和之间做出选择"${BASH_SOURCE[0]}"

GNU的这个描述对我没什么帮助.

    BASH_SOURCE

 An array variable whose members are the source filenames where the
 corresponding shell function names in the FUNCNAME array variable are
 defined. The shell function ${FUNCNAME[$i]} is defined in the file
 ${BASH_SOURCE[$i]} and called from ${BASH_SOURCE[$i+1]}
Run Code Online (Sandbox Code Playgroud)

bash

84
推荐指数
4
解决办法
4万
查看次数

基于文件位置而不是当前工作目录的相对路径

鉴于:

some.txt
dir
 |-cat.sh
Run Code Online (Sandbox Code Playgroud)

使用cat.sh的内容:

cat ../some.txt
Run Code Online (Sandbox Code Playgroud)

然后在./cat.sh内部运行dir工作正常,而不是./dir/cat.sh在同一级别上运行dir.我希望这是由于不同的工作目录.是否有一个容易的是../some.txt相对于位置的路径cat.sh

bash shell

82
推荐指数
3
解决办法
8万
查看次数

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

我在同一个文件夹中有两个Bash脚本(由下载整个存储库的用户保存在某处):

  • script.sh 由用户运行
  • helper.sh 是必需的并且由 script.sh

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

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

我绝对可以通过将当前目录存储在一个变量中来实现这一目的,但是该代码似乎不必要地复杂化,因为我认为这是一个非常常见且简单的任务.

可靠的helper.sh内部可靠呼叫方式script.sh吗?并且可以在任何支持Bash的操作系统中使用吗?

bash path filepath

39
推荐指数
3
解决办法
2万
查看次数

获取当前目录并连接路径

这是一个shell脚本(.sh文件).我需要根据当前目录创建一个绝对路径.我知道pwd,但如何将其与另一个字符串连接?这是我想要做的一个例子:

"$pwd/some/path"
Run Code Online (Sandbox Code Playgroud)

shell

23
推荐指数
2
解决办法
2万
查看次数

我可以在KornShell中获取当前脚本的绝对路径吗?

是否有可能找到当前在KornShell(ksh)中执行的脚本的完整路径?

即如果我的脚本在/opt/scripts/myscript.ksh,我可以编程在该脚本内发现/opt/scripts/myscript.ksh吗?

谢谢,

unix shell scripting ksh path

22
推荐指数
4
解决办法
4万
查看次数

如何简单地检索当前脚本的绝对路径(多操作系统解决方案)?

我正在寻找一个简单的解决方案来检索当前脚本的绝对路径。它需要独立于平台(我希望它可以在 linux、freebsd、macos 和没有 bash 的情况下工作)。

  • “readlink -f $0”适用于 linux,但不适用于 freebsd 和 macos:readlink 没有“-f”选项。
  • “realpath $0”适用于 freebsd 和 linux,但不适用于 macos:我没有这个命令。

编辑:检索脚本存储库路径的解决方案:

DIR="$( cd "$( dirname "$0" )" && pwd )"(来源:从内部获取 Bash 脚本的源目录

shell

5
推荐指数
2
解决办法
1231
查看次数

通过抑制 stdout bash 脚本创建安静模式

我编写了一个 bash 脚本,该脚本通过命令行开关打开了一些选项。我想为用户创建选项以在安静模式下运行此脚本,这意味着 - 所有标准输出都将被重定向到 /dev/null。如果 -q 开关打开,我使用一个更改为 /dev/null 的变量:

while getopts ":qhb:kape" opt; do
    case $opt in
       q)
        output=/dev/null
        ;;
Run Code Online (Sandbox Code Playgroud)

后来我将 acho mesagges 重定向到输出:

echo "something" 1>>$output
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在没有发送 -q 开关的情况下初始化上面的这个 var 输出。标准标准输出目的地(通常称为 sctipt 的文本终端)的值是多少?

谢谢!

bash

3
推荐指数
1
解决办法
2611
查看次数

标签 统计

bash ×6

shell ×5

ksh ×2

path ×2

unix ×2

directory ×1

filepath ×1

scripting ×1