3

私はJavaアプリケーションを持っています.そして、アプリからいくつかのバッチファイルを呼び出します. バッチ ファイルは、readlink -f を使用して自身のフル パスを取得します。しかし、Linux で「command not found エラー」が発生します (Linux 2.4.18-3custom #2 Wed Aug 18 03:46:33 EDT 2004)。バッチ ファイルで pwd コマンドを試しましたが、アプリの現在のディレクトリが表示されました。私は実際にシェルスクリプトでバッチファイルを書きます。また、coreutils をインストールできません。pwd を含まない readlink -f の代替手段はありますか?

4

2 に答える 2

0

readlinkcoreutilsLinux 用のパッケージの一部です。したがってcoreutils、システムにインストールするだけで利用可能にreadlinkなります。

于 2014-08-19T14:43:44.743 に答える
0

これは、Linuxquestions.orgの休眠中のブログから転送されたソリューションの例です。スクリプトでこれを使用して、パスの絶対パスを取得できます。これは、どのバージョンの Bash でも動作します。古いものであっても、他のシェルの他のソリューションを入手することもできます。投稿を確認してください。

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 に答える