LINUX.ORG.RU

> Как передать значение переменной запускаемому файлу в качестве параметра коммандной строки?

> Что-то вроде ./my_proga $zz

мда, сам спросил сам ответил...

arsi ★★★★★
()

тебе надо передать значение переменной скрипту на bash?
$ PEREMENNAYA=ZNACHENIE ./my_proga
или
$ ./my_proga PEREMENNAYA
или как там ты хочешь..

snoopcat ★★★★★
()
Ответ на: комментарий от snoopcat

Мне надо передать бинарнику путь к файлу (к нему же), содержащийся в этой переменной. Определение каталога, в котором запустился бинарник нетривиальная задача, если он сжат upx. Пытаюсь обойтись без утилиты pwd.

Napilnik ★★★★★
() автор топика
Ответ на: комментарий от snoopcat

Делаю как в вашем примере, потом смотрю, что получила прога в первом ключе коммандной строки, а там лажа. Вот так работает:

#!/bin/sh
p=`(echo ${BASH_SOURCE[0]}) 2>&1`
p=${p%%:*}
d=${p%/*}
cd $d
./my_proga `pwd`
Программа получает выхлоп утилиты pwd без искажений, пытаюсь вместо pwd использовать переменную и обламываюсь.

Napilnik ★★★★★
() автор топика

Блин... У меня в cd $d используется не абсолютный путь, потому и не получалось передать нормальные данные - в переменной их не было( Вот в чём ошибка. А как записать в переменную абсолютный путь, начиная от корня?

Napilnik ★★★★★
() автор топика
Ответ на: комментарий от Napilnik

Когда-то всемогущий гугл подсказал мне вот такой скрипт:

getScriptPath()
{
    if [ -d ${0%/*} ]
    then
        abspath=$(cd ${0%/*} && echo $PWD/${0##*/})
        # to get the path only - not the script name - add
        pathOnly=`dirname "$abspath"`
    else
        progdir=`dirname $0`
        cd $progdir
        pathOnly=$PWD
    fi

    echo $pathOnly;
    return
}

kulti ★★
()
Ответ на: комментарий от fluorite

Ну дык я питон знаю лучше баша... Ваше решение однозначно лучше!

AIv ★★★★★
()

Собственно ./my_proga $PWD передаёт в программу путь по которому лежит её бинарник. Надеюсь, решение дистрибутивонезависимое.

Napilnik ★★★★★
() автор топика
Ответ на: комментарий от Napilnik

> ./my_proga $PWD передаёт в программу путь по которому лежит её бинарник.

$PWD отдает текущую директорию.

Попробуй:

./test/my_proga $PWD

TGZ ★★★★
()
Ответ на: комментарий от Napilnik

Раз уж Вы имеете доступ к аргументам командной строки, то нулевым аргументом идет путь к самой программе (так как он был указан при вызове), и все что нужно - раскрутить его до полного. В питон это делает ф-я os.path.abspath, и думаю что в любом ЯП можно найти какой то аналог. Зачем тут баш?

AIv ★★★★★
()
Ответ на: комментарий от AIv

>Раз уж Вы имеете доступ к аргументам командной строки, то нулевым аргументом идет путь к самой программе

При запуске программы сжатой upx, в линуксе, оная распаковывается толи в память, толи ещё куда и только после этого запускается. В таком случае нулевой аргумент показывает ничто.

Napilnik ★★★★★
() автор топика
Ответ на: комментарий от TGZ

Дык в полном виде скрипт выглядит так:

#!/bin/sh
p=`(echo ${BASH_SOURCE[0]}) 2>&1`
p=${p%%:*}
d=${p%/*}
cd $d
./my_proga $PWD
Когда-то стрельнул скрипт который можно запускать кликом мышки, теперь доработал.

Napilnik ★★★★★
() автор топика
Ответ на: комментарий от AIv

Какой-то обманный у тебя аватар, сколько раз принимал его за рыжую облизьяну вытянувшую руку. А на самом деле там тварь в клыками, ждёт пока поближе подойдёшь.

Napilnik ★★★★★
() автор топика
Ответ на: комментарий от Napilnik

Ты чего, не смотрел «Ледниковый период»? Эта тварь - саблезубая белка, питается только орехами, напильников и транстформеров не ест;-)

AIv ★★★★★
()
Ответ на: комментарий от Napilnik

> При запуске программы сжатой upx,

Ок, сорри - я с этим не сталкивался, ничего сказать не могу.

AIv ★★★★★
()
Ответ на: комментарий от AIv

Мельком отрывки видел, целиком смотреть вломешник, запарил Диней своим мылом политкорректным. Аниме и сентай круче. Если посмотреть на аватарку расслабленно не думая о диснеях, то правый глаз и ухо лиса смотрятся как голова а нос как рука.

Napilnik ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.