从参数中获取文件的完整路径

Get full path to file from argument

我正在写一个 shell 脚本,我对它还很陌生,但是当脚本得到 运行 时,第一个 first/second 参数(取决于你如何看待它)将是要加载和执行的文件。我的问题是,如何根据 myscript 所在的目录 运行 在什么位置获取文件的位置?

myscript path/to/file.ext
myscript file.ext
myscript ../../file.ext

基本上我想获取传入文件的路径。如何实现?

在bash中:

pathToFile=$(dirname )
fileName=$(basename )
scriptPath=$(dirname [=10=])
scriptName=$(basename [=10=])
currentPath=$(pwd)

在其他 shell 中,您可以尝试将 $( 和 ) 替换为 `(反引号)

此代码段将为您提供脚本的完整路径和任何参数:

DIR="$( cd "$( dirname "$i" )" && pwd )"

$i 替换为 [=12=] 以获得脚本的完整路径 (myscript)。 </code>、<code>、...将为您提供子序列参数的完整路径。

最简单的方法是使用 realpath ""。尽管打算与符号链接一起使用,但事实证明它比大多数其他方法更能解决一般使路径成为绝对路径的问题。

在许多系统上,默认情况下可能未安装 realpath。有时在自己的包里,有时在coreutils,等等

顺便说一句,这类问题可能更适合 https://unix.stackexchange.com,即使它在这里不是题外话。