Тема: BASH: Способы получения/создания переменных в субшелле
Напишите вариации...
Плюсом - способы получения полного имени выполняемого скрипта - не все так просто.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Серый форум → Общение → Прочие скриптовые технологии → BASH: Способы получения/создания переменных в субшелле
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Напишите вариации...
Плюсом - способы получения полного имени выполняемого скрипта - не все так просто.
Способы получения/создания переменных в субшелле
Конкретизируйте коллега. Там все просто. Почти.
# простые строковые присваивания
MYVAR="My home directory is "
MYVAR="$MYVAR $HOMEPATH"
# присваивание выходного потока некоторой команды
MYVAR=`echo 1 + 2 | bc`
MYVAR=$(echo 1 + 2 | bc)Плюсом - способы получения полного имени выполняемого скрипта - не все так просто.
Имеете ввиду расширить любой путь в абсолютный путь от корня?
1. в субшеле
2. путь в независисмости от двух из шелов sh (dash) или bash и в не зависимости от способа запуска ./xxx; . ./xxx; eval xxx; (ba)sh './xxx'; . ../../xxx/../xxx/yyy/xxx
1. чтобы не было недоразумений в непонимании вопроса. Объясните что такое "запуск в субшелле"
2. на самом деле в мире юникс это не критично - как именно из приведенных способом был вызван скрипт. Если Вам необходимо организовать доступ к конфигурационным файлам данного скрипта, достаточно получить каталог из имени скрипта. Дальнейшие действия зависят от организации окружения скрипта:
# имя скрипта (предполагаем, что имя без расширения)
BINNAME=$(basename)
# каталог запуска скрипта, например /usr/local/SCRIPT/BIN
BINDIR=$(dirname $0)
# каталог конфигурационных файлов, например /usr/local/SCRIPT/CFG
CFGDIR=$BINDIR/../cfgПо пункту 2 - объясните - зачем Вашему скрипту такие требования?
Что бы, не было доразумений объяснять про "мир" юникс не стану
a=1; echo | a=2; echo a=$aКаков стратегический замысел данной конструкции?
echo | a=2И... Простите, но вопросов много, но не понятно что Вас беспокоит и чем Вам помочь.
сокрального смысла нет - есть такого рода конструкции - это пример
беспокойства нет, есть предложение дать свои/несвои методы доступа к переменным из субшела
к примеру, для затравки (раз требуется разъяснение) (для баша)
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Все же хотелось бы послушать мнение товарищей владеющих вопросом.
echo $0
выведет имя скрипта
put=`pwd`
echo $put $0
выведет путь и имя, немного напильником доработать и все
переменные как объявлять написали
если нужна переменная ГЛОБАЛЬНАЯ делаем
perem= 123; export perem
ЗЫ а вообще http://www.bash-scripting.ru/abs/chunks/index.html
qwertEHOK - Вы сабж внимательно читали ?
про имя скрипта предлагаю выполнить хотя бы (есть много вариантов)
. script
и посмотреть что вернет Вам $0
(но в ветке речь не об этом - читайте еще раз и внимательно)
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться