LINUX.ORG.RU

bash. определить что shell является subshell`ом. дитем.


0

1

в последней теме я там и не смог понять почему я не получаю ожидаемый результат: bash. subshell. вопрос. (комментарий)

спрошу по другому: как можно определить, что текущий процесс shell`а является subshell`ом?

спасибо.

★★★

Последнее исправление: niXman (всего исправлений: 1)

Сначала тебе надо понять, что такое SUBSHELL, а потом морочить голову людям.

(script.sh) — не SUBSHELL, т.е. script.sh будет запущен в SUBSHELL'е , но внутри скрипта он level 0

sdio ★★★★★
()

самообразование и тренировка (т.е. у тебя реальной задачи для которой это всё надо думаю нет)это конечно всё классно, но по моему ты заморочался какой-то хренью. Сабшелл ради сабшелла это не то на что стоит время

zolden ★★★★★
()

( xx=$BASH_SUBSHELL ./script.sh)

в ./script.sh xx будет = 1

sdio ★★★★★
()
echo $PPID 

Соответственно, если родительский процесс не init, тогда это сабшелл. Либо так:

echo $BASH_SUBSHELL 

BASH_SUBSHELL Incremented by one each time a subshell or subshell environment is spawned. The initial value is 0.

aed
()
Ответ на: комментарий от adriano32

зачем С? почему С? мне нужно решение на bash.

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

как/откуда/где понять что же такое сабшел?

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

реальная задача есть. описание:

имеется набор тестов в виде исполняемых файлов разделенных по категориям. каждая категория может зависеть от другой, или нескольких других категорий. требуется реализовать bash-скрипт выполняемый из командной строки и принимающий список необходимых тестов. пример: "./runtests test1 test2 test5". при этом, test1 может зависеть от test5 к примеру, и наоборот. каждый тест содержит как минимум две функции: build и run. в таком случае, сначала выполняется build для зависимости, потом build для цели, потом run для цели.

какой я вижу реализацию(псевдокод):

если_не_дите
   итерируемся по аргументам командной строки;
      (выполняем себя же для каждого аргумента)

иначе подгружаем одноименный скрипт в котором описаны зависимости;

   итерируемся по списку зависимостей;
      (выполняем себя же для каждой зависимости)

   если_зависимостей_нет
      выполняем функцию build из подгруженного скрипта;
   конец_если

конец_если
[[/code]]

вроде как все логично. готов выслушать предложения.

спасибо.

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

не спал весь день,всё пытался понять постановку задачи.Если тест является зависимостью другого теста то неважно когда он выполнится,задолго до его 'родителя' или непосредственно перед ним?

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

порядок зависимостей описывается пользователем.

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

в общем, простыми словами, задача почти полностью идентична со списками зависимости в Makefile`ах, вот только реализовать это нужно на bash.

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