在shell脚本中引用当前目录

18 浏览
0 Comments

在shell脚本中引用当前目录

在shell脚本中,如何引用当前目录?

我有一个脚本,调用了同一目录下的另一个脚本:

#! /bin/sh
#调用另一个脚本
./foo.sh 
#做一些操作...

对此我得到了`./foo.sh: 没有那个文件或目录`的错误。

所以我将它改为:

#! /bin/sh
#调用另一个脚本
foo.sh 
#做一些操作...

但这会调用默认情况下在PATH中的`foo`脚本,这不是我想要的。

所以问题是,在shell脚本中如何引用`./`的语法?

0
0 Comments

在shell脚本中,经常需要引用当前目录。然而,有时候会遇到一些问题,例如目录名中含有空格,或者需要使用绝对路径。以下是一个关于如何在shell脚本中引用当前目录的问题以及解决方法的介绍。

首先,让我们看一下下面的代码,它可以在目录名中含有空格的情况下正常工作,而且不需要使用bash:

#!/bin/sh
SCRIPTDIR="$(dirname "$0")"
#调用另一个脚本
"$SCRIPTDIR/foo.sh"

在这段代码中,$(dirname "$0")用来获取当前脚本的所在目录的路径。然后,通过$SCRIPTDIR变量来引用这个路径,并调用另一个脚本。

另外,如果你想使用绝对路径,可以使用下面的代码:

SCRIPTDIR=`cd "$(dirname "$0")" && pwd`

这段代码中,cd "$(dirname "$0")"用来切换到当前脚本所在目录,而pwd用来获取当前目录的绝对路径。然后,通过$SCRIPTDIR变量来引用这个路径。

通过以上方法,我们可以方便地在shell脚本中引用当前目录,并且可以处理目录名中含有空格的情况,以及使用绝对路径的需求。

0
0 Comments

从上述内容中可以看出,问题的出现是因为在shell脚本中需要引用当前目录,但是不清楚如何正确地引用。

解决方法是使用"./"来引用当前工作目录。

0
0 Comments

问题:在shell脚本中如何引用当前目录?

出现原因:如果两个脚本位于同一目录下,但是在运行第一个脚本时出现了“./foo.sh: No such file or directory”错误,那么最有可能的原因是你在不同于脚本所在目录的位置运行了第一个脚本。

解决方法:在第一个脚本中添加以下内容,这样调用foo.sh时无论从哪个位置调用第一个脚本都能正常工作:

my_dir=`dirname $0`
#调用另一个脚本
$my_dir/foo.sh

处理目录名称中的空格有什么方法?它会抛出错误。

目录的完整路径是$PWD/$my_dir

请注意,对于被“source”引用的脚本,$0不能按预期工作。对于bash,可以使用BASH_SOURCE作为$0的替代方案,它可以按预期工作。

参考链接:github.com/marcellodesales/docker-puller/blob/master/…

0