Про sh, bat и бинарные файлы?

Я не знаток подобного программирования.


Нашел скрипт подобного содержания:

#!/bin/bash

function die() {
    echo "$1"
    exit 1
}

# Taken from Debian Developers Reference Chapter 6
function pathfind() {
     OLDIFS="$IFS"
     IFS=:
     for p in $PATH; do
         if [ -x "$p/$*" ]; then
             IFS="$OLDIFS"
             return 0
         fi
     done
     IFS="$OLDIFS"
     return 1
}

pathfind "java" || die "[ERROR] could not find: java in \$PATH"

exec java -jar $0 "$@"


PK.... тут идет 200кб бинарных данных просто скопированных в скрипт, которые не вставляются в поле браузера.



Т.е. тут вызывается java, которой передается JAR-файл. Посуществу, передавать нужно путь к файлу. Как я понял, подобным образом bash позволяет передать содержимое файла, вместо пути.


Исправьте меня пожалуйста, и разъясните на пальцах логику работы, а также подскажитe как подобное сделать для Win.
  • Вопрос задан
  • 4357 просмотров
Решения вопроса 1
cursed
@cursed Автор вопроса
Всем спасибо. Под виндой методом тыка оказалось так:

@echo off & java -jar %0 %* & exit /b 0 ... и дальше пихаем бинарник
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Фактически этот скрипт предназначен для того, чтоб Java-приложение *.jar превратить в исполнимый файл UNIX.
Те бинарные данные в конец PK… и тд — это и есть JAR, тоесть Java классы в ZIP архиве.
Логика работы тут простая; скрипт ищет по списку путей в переменной PATH программу java и если находит ее — запускает, передавая в качестве имени имя текущего скрипта и как параметры — параметры с которыми был запущен скрипт. Если java не найдена — сообщает об этом.
Ответ написан
mitry
@mitry
Под виндой как-тот так:

@start java %0 %*
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы