1 (изменено: smaharbA, 2011-06-23 19:56:24)

Тема: BASH: Способы получения/создания переменных в субшелле

Напишите вариации...

Плюсом - способы получения полного имени выполняемого скрипта - не все так просто.

Я конечно далек от мысли... (с)

2

Re: BASH: Способы получения/создания переменных в субшелле

smaharbA пишет:

Способы получения/создания переменных в субшелле

Конкретизируйте коллега. Там все просто. Почти.

# простые строковые присваивания
MYVAR="My home directory is "
MYVAR="$MYVAR $HOMEPATH"

# присваивание выходного потока некоторой команды
MYVAR=`echo 1 + 2 | bc`
MYVAR=$(echo 1 + 2 | bc)
smaharbA пишет:

Плюсом - способы получения полного имени выполняемого скрипта - не все так просто.

Имеете ввиду расширить любой путь в абсолютный путь от корня?

( 2 * b ) || ! ( 2 * b )

3

Re: BASH: Способы получения/создания переменных в субшелле

1. в субшеле
2. путь в независисмости от двух из шелов sh (dash) или bash и в не зависимости от способа запуска ./xxx; . ./xxx; eval xxx; (ba)sh './xxx'; . ../../xxx/../xxx/yyy/xxx

Я конечно далек от мысли... (с)

4

Re: BASH: Способы получения/создания переменных в субшелле

1. чтобы не было недоразумений в непонимании вопроса. Объясните что такое "запуск в субшелле"
2. на самом деле в мире юникс это не критично - как именно из приведенных способом был вызван скрипт. Если Вам необходимо организовать доступ к конфигурационным файлам данного скрипта, достаточно получить каталог из имени скрипта. Дальнейшие действия зависят от организации окружения скрипта:

# имя скрипта (предполагаем, что имя без расширения)
BINNAME=$(basename)

# каталог запуска скрипта, например /usr/local/SCRIPT/BIN
BINDIR=$(dirname $0)

# каталог конфигурационных файлов, например /usr/local/SCRIPT/CFG
CFGDIR=$BINDIR/../cfg

По пункту 2 - объясните - зачем Вашему скрипту такие требования?

( 2 * b ) || ! ( 2 * b )

5

Re: BASH: Способы получения/создания переменных в субшелле

Что бы, не было доразумений объяснять про "мир" юникс не стану

a=1; echo | a=2; echo a=$a
Я конечно далек от мысли... (с)

6

Re: BASH: Способы получения/создания переменных в субшелле

Каков стратегический замысел данной конструкции?

echo | a=2

И... Простите, но вопросов много, но не понятно что Вас беспокоит и чем Вам помочь.

( 2 * b ) || ! ( 2 * b )

7 (изменено: smaharbA, 2011-07-05 18:14:30)

Re: BASH: Способы получения/создания переменных в субшелле

сокрального смысла нет - есть такого рода конструкции - это пример
беспокойства нет, есть предложение дать свои/несвои методы доступа к переменным из субшела

к примеру, для затравки (раз требуется разъяснение) (для баша)

a=1
echo 1. a=$a
echo 2 | while read; do
    a=$REPLY
    echo 2. a=$a
done
echo 3. a=$a

и так

a=1
echo 1. a=$a
while read; do
    a=$REPLY
    echo 2. a=$a
done < <(echo 2)
echo 3. a=$a
Я конечно далек от мысли... (с)

8

Re: BASH: Способы получения/создания переменных в субшелле

Все же хотелось бы послушать мнение товарищей владеющих вопросом.

Я конечно далек от мысли... (с)

9 (изменено: qwertEHOK, 2012-01-23 17:37:27)

Re: BASH: Способы получения/создания переменных в субшелле

echo $0
выведет имя скрипта

put=`pwd`

echo $put $0
выведет путь и имя, немного напильником доработать и все

переменные как объявлять написали
если нужна переменная ГЛОБАЛЬНАЯ делаем

perem= 123; export perem


ЗЫ а вообще http://www.bash-scripting.ru/abs/chunks/index.html

10

Re: BASH: Способы получения/создания переменных в субшелле

qwertEHOK - Вы сабж внимательно читали ?

про имя скрипта предлагаю выполнить хотя бы (есть много вариантов)

. script

и посмотреть что вернет Вам $0

(но в ветке речь не об этом - читайте еще раз и внимательно)

Я конечно далек от мысли... (с)