使用相对路径从另一个脚本调用一个shell脚本

我有这样的脚本:

#!/bin/csh
echo "This is the main programme"
./printsth

我想从这个脚本中使用相对路径调用脚本printsth 。 有没有办法做到这一点? 相对路径我的意思是相对于我的调用脚本的路径。


您可以使用$cwd引用当前的工作目录。 所以如果你想用相对于当前工作目录的路径调用printsth ,用$cwd开始行。

例如,如果您想在当前目录中调用printsth ,请说:

$cwd/printsth

如果你想打电话给上面的printsth一个目录:

$cwd/../printsth

确保它是一个csh脚本(即第一行是#!/bin/csh )。 如果它是shbash脚本,则需要使用$PWD (用于'当前工作目录'),而不是$cwd

编辑:

如果你想要一个与脚本目录相关的目录,而不是当前的工作目录,那么你可以这样做:

setenv SCRIPTDIR `dirname $0`
$SCRIPTDIR/printsth

这会将$SCRIPTDIR设置为与原始脚本相同的目录。 然后你可以建立相关的路径。


将脚本作为./printsth运行将不会始终工作,因为相对路径取决于运行主脚本的目录。

一种解决方案是确保我们进入脚本所在的目录,然后运行它:

cd -P -- "$(dirname -- "$0")"
./printsth

有关更多示例,请参阅:如何将当前工作目录设置为脚本的目录?

另请参阅:如何将绝对路径转换为相对路径?

链接地址: http://www.djcxy.com/p/56781.html

上一篇: Call one shell script from another script using relative paths

下一篇: how to get script directory in POSIX sh?