Проблема с моим Bash-скриптом - PullRequest
       11

Проблема с моим Bash-скриптом

3 голосов
/ 09 сентября 2010

Он все, у меня проблема с моим bash-скриптом.Вот мой код:

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

Если я выполняю его по ./script_name, это работает, но если я дважды щелкаю по нему, это не работает, я получаю эту ошибку:
"Невозможно получить доступ к jarfile my_app.jar ".
Тогда вывод pwd будет другим !!!

Моя ОС MacOSX, но мне нужно создать скрипт bash, который будет работать и в Linux.

Ответы [ 4 ]

1 голос
/ 13 апреля 2011

Я считаю, что решение , предложенное Шоном Дж. Гоффом и прокомментированное Гордоном Дэвиссоном , может быть улучшено с помощью современного bash синтаксиса подстановки команд. Я предполагаю, что скрипт и jar находятся в одной папке:

#!/bin/bash
java -jar "$(cd "$(dirname "$0")"; pwd)/my_app.jar"
echo The present working directory is $(cd "$(dirname "$0")"; pwd)
0 голосов
/ 09 сентября 2010

Переменная $ 0 должна содержать путь к скрипту. Вы можете использовать dirname, чтобы получить каталог, в котором находится скрипт.

java -jar `dirname $0`/my_app.jar
0 голосов
/ 14 сентября 2010

ОК, поэтому вам нужно решить 2 проблемы:

  1. Если ваш скрипт и ваш jar всегда установлены в одном и том же каталоге, проблема 1 состоит в том, чтобы идентифицировать этот каталог.Это обсуждается здесь .Как только вы узнаете каталог скрипта, вы можете сослаться на ваш файл jar относительно этого.

  2. Путь к установленному в системе java исполняемому файлу.В конечном итоге простое использование java является простым и общепринятым и зависит от правильной настройки PATH.Если это вам не подходит, просто включите упорядоченный список наиболее распространенных путей и посмотрите, являются ли они исполняемыми с использованием if [ -e /usr/bin/java ], например, запустив первый, который найдет ваш код.

0 голосов
/ 09 сентября 2010

Если вы используете графический инструмент для выполнения скрипта, текущий рабочий каталог является произвольным.Текущий рабочий каталог не является полезным понятием в графических приложениях, и они обычно его не используют или не изменяют.Это означает, что вы должны указать полный путь в вызове программы java или перейти в каталог, в котором находится скрипт.К сожалению, хорошего решения для последнего нет .

...