3

彼全員、私は私のbashスクリプトに問題があります。それが私のコードです:

#!/bin/bash
java -jar my_app.jar
echo "The present working directory is `pwd`"

./script_nameで実行すると機能しますが、ダブルクリックしても機能しない場合は、
「jarfilemy_app.jarにアクセスできません」というエラーが発生します。
次に、pwd出力​​が異なります!!!

私のOSはMacOSXですが、Linuxでも動作するbashスクリプトを作成する必要があります。

4

4 に答える 4

1

Shawn J. Goffによって提案され、 Gordon Davissonによってコメントされた解決策は、最新のコマンド置換構文を採用することで改善できると思います。スクリプトとjarが同じフォルダーにあると想定しています。bash

#!/bin/bash
java -jar "$(cd "$(dirname "$0")"; pwd)/my_app.jar"
echo The present working directory is $(cd "$(dirname "$0")"; pwd)
于 2011-04-13T12:46:33.833 に答える
0

グラフィカルツールを使用してスクリプトを実行する場合、現在の作業ディレクトリは任意です。現在の作業ディレクトリは、グラフィカルアプリケーションでは有用な概念ではなく、通常、それを使用したり変更したりすることはありません。つまり、プログラムの呼び出しにフルパスを含めるjavaか、スクリプトが配置されているディレクトリに移動する必要があります。残念ながら、後者の良い解決策はありません

于 2010-09-09T09:10:52.637 に答える
0

変数$0は、スクリプトへのパスを保持する必要があります。dirnameを使用して、スクリプトが含まれているディレクトリを取得できます。

java -jar `dirname $0`/my_app.jar
于 2010-09-09T12:27:59.040 に答える
0

さて、あなたが解決しなければならない2つの問題があります:

  1. スクリプトとjarが常に同じディレクトリにインストールされていると仮定すると、問題1はそのディレクトリを特定することです。これについてはここで説明します。スクリプトのディレクトリがわかれば、それに関連するjarファイルを参照できます。

  2. システムにインストールされている実行可能ファイルへのパスjava。最終的には、ベアを使用するだけjavaで簡単で従来型であり、PATHが適切に構成されている必要があります。それでも問題が解決しない場合は、最も一般的なパスの順序付きリストを含めて、if [ -e /usr/bin/java ]たとえば、コードが最初に見つけたパスを実行するなどして、それらが実行可能かどうかを確認します。

于 2010-09-14T06:34:03.683 に答える