3

我有一个 java 应用程序。我从应用程序调用一些批处理文件。批处理文件使用 readlink -f 获取自身的完整路径。但我在 Linux 中收到“命令未找到错误”。(Linux 2.4.18-3custom #2 Wed Aug 18 03:46:33 EDT 2004)。我在批处理文件中尝试了 pwd 命令。但是它给了我的应用程序当前目录。但是我需要从它本身中找到批处理目录。所以,pwd 不能解决我的问题。我实际上是在 shell 脚本上编写我的批处理文件。而且我无法安装 coreutils。不包括 pwd 的 readlink -f 有什么替代方法吗?

4

2 回答 2

0

这是我在 Linuxquestions.org 上的休眠博客中转发的示例解决方案。您可以让您的脚本使用它来获取路径的绝对路径。这个适用于任何版本的 Bash。您还可以获得其他 shell 甚至旧 shell 的其他解决方案。只需检查帖子

function getabspath {
    local -a T=()
    local -i I=0
    local IFS=/ A

    case "$1" in
    /*)
        __=$1
        ;;
    *)
        __=/$PWD/$1
        ;;
    esac

    while read -r -d / A; do
        case "$A" in
        ..)
            [[ I -ne 0 ]] && unset T\[--I\]
            continue
            ;;
        .|'')
            continue
            ;;
        esac

        T[I++]=$A
    done << .
$__/
.

    case "$1" in
    */)
        [[ I -ne 0 ]] && __="/${T[*]}/" || __=/
        ;;
    *)
        [[ I -ne 0 ]] && __="/${T[*]}" || __=/.
        ;;
    esac
}

用法:

getabspath your/path/here
<Do something with "$__">

考虑编译一个简单的 C 解决方案

于 2014-08-19T14:43:11.550 回答
0

readlinkcoreutilsLinux 软件包的一部分。因此,只需coreutils在您的系统上安装,您就可以readlink使用。

于 2014-08-19T14:43:44.743 回答