我正在编写一个 shell 脚本,我对它很陌生,但是当脚本运行时,第一个/第二个参数(取决于您如何看待它)将是要加载和执行的文件。我的问题是,如何根据myscript运行目录的位置获取文件的位置?
myscript path/to/file.ext
myscript file.ext
myscript ../../file.ext
Run Code Online (Sandbox Code Playgroud)
基本上我想获取传入文件的路径。怎么做?
最简单的方法是使用realpath "$1". 尽管旨在与符号链接一起使用,但事实证明,对于使路径成为绝对路径的一般问题,它比大多数其他方法更有效。
在许多系统上,realpath默认情况下可能不会安装。有时它在自己的包中,有时在coreutils等中。
顺便说一句,这类问题可能更适合https://unix.stackexchange.com,尽管这里并不是偏离主题。
小智 5
在bash中:
pathToFile=$(dirname $1)
fileName=$(basename $1)
scriptPath=$(dirname $0)
scriptName=$(basename $0)
currentPath=$(pwd)
Run Code Online (Sandbox Code Playgroud)
在其他 shell 中,您可以尝试用 `(反引号)替换 $( 和 )
此代码段将为您提供脚本的完整路径和任何参数:
DIR="$( cd "$( dirname "$i" )" && pwd )"
Run Code Online (Sandbox Code Playgroud)
替换$i为$0以获取脚本的完整路径 ( myscript)。$1, $2, ... 将为您提供子序列参数的完整路径。
| 归档时间: |
|
| 查看次数: |
3213 次 |
| 最近记录: |