Вопросы с тегом «subshell»

94
Действительно ли скобки помещают команду в подоболочку?

Из того, что я прочитал, размещение команды в скобках должно запускать ее в подоболочке, аналогично запуску скрипта. Если это правда, как он видит переменную x, если x не экспортируется? x=1 Запуск (echo $x)в командной строке приводит к 1 Запуск echo $xв скрипте ничего не дает, как и...

51
Является ли $ () подоболочкой?

Я понимаю, что синтаксис подоболочки (<commands...>)- это $()всего лишь подоболочка, из которой можно извлечь значения переменных? Примечание: это относится к bash 4.4 на основании различных формулировок в их...

48
Почему (выход 1) не выходит из сценария?

У меня есть скрипт, который не выходит, когда я этого хочу. Пример сценария с той же ошибкой: #!/bin/bash function bla() { return 1 } bla || ( echo '1' ; exit 1 ) echo '2' Я хотел бы увидеть вывод: :~$ ./test.sh 1 :~$ Но я на самом деле вижу: :~$ ./test.sh 1 2 :~$ Создает ли ()цепочка команд...

31
Создание оболочки Bash с помощью фигурных скобок

В соответствии с этим , размещение списка команд между фигурными скобками приводит к тому, что список выполняется в текущем контексте оболочки. Никакая подоболочка не создана . Используя, psчтобы увидеть это в действии Это иерархия процессов для конвейера процессов, выполняемого непосредственно в...

30
скрипт выхода из подоболочки

Рассмотрим этот фрагмент: stop () { echo "${1}" 1>&2 exit 1 } func () { if false; then echo "foo" else stop "something went wrong" fi } Обычно, когда funcвызывается, сценарий завершается, что является предполагаемым поведением. Тем не менее, если он выполняется в под-оболочке, например, в...

24
Правило вызова subshell в Bash?

Кажется, я неправильно понимаю правило Bash для создания подоболочки. Я думал, что круглые скобки всегда создают подоболочку, которая запускается как собственный процесс. Тем не менее, это не так. В фрагменте кода A (ниже) вторая sleepкоманда не выполняется в отдельной оболочке (как определено...

24
Как я могу определить, что я нахожусь в подоболочке?

Я пытаюсь написать функцию, чтобы заменить функциональность exitвстроенной, чтобы предотвратить выход из терминала. Я попытался использовать SHLVLпеременную окружения, но она не меняется внутри подоболочек: $ echo $SHLVL 1 $ ( echo $SHLVL ) 1 $ bash -c 'echo $SHLVL' 2 Моя функция заключается в...

22
Как этот скрипт гарантирует, что работает только один его экземпляр?

19 августа 2013 года Рэндал Л. Шварц опубликовал этот сценарий оболочки, который должен был гарантировать, что в Linux «работает только один экземпляр []], без условий гонки или необходимости очистки файлов блокировки»: #!/bin/sh # randal_l_schwartz_001.sh ( if ! flock -n -x 0 then echo "$$ cannot...

18
Почему переменная видна в подоболочке?

В Learning Bash Book упоминается, что подоболочка будет наследовать только переменные среды, дескрипторы файлов и т. Д. И что она не будет наследовать переменные, которые не экспортируются: $ var=15 $ (echo $var) 15 $ ./file # this file include the same command echo $var $ Как я знаю, оболочка...

18
В zsh разница между cat <(cat) и cat | кошка против кошки = (кошка)?

Я ожидал cat <(cat)и cat | catсделать то же самое: скопировать строки из стандартного ввода в стандартный вывод. Насколько я понимаю, оба выполняли бы catв подоболочке, перенаправляли catstdout подоболочки во временный именованный канал, а затем выполняли другой catв текущей оболочке с его...

18
Собирать коды выхода параллельных фоновых процессов (подоболочек)

Скажем, у нас есть скрипт bash, например: echo "x" & echo "y" & echo "z" & ..... echo "Z" & wait Есть ли способ собрать коды выхода для вложенных оболочек / подпроцессов? Ищите способ сделать это и ничего не можете найти. Мне нужно запустить эти подоболочки параллельно, иначе да,...

16
Stateful функция Bash

Я хотел бы реализовать функцию в Bash, которая увеличивает (и возвращает) счетчик при каждом вызове. К сожалению, это кажется нетривиальным, так как я вызываю функцию внутри подоболочки и, следовательно, она не может изменять переменные родительской оболочки. Вот моя попытка: PS_COUNT=0...

16
Это ошибка в Bash? `return` не завершает функцию, если вызывается из канала

У меня были некоторые странные проблемы с Bash в последнее время. Пытаясь упростить свой сценарий, я разработал небольшой фрагмент кода: $ o(){ echo | while read -r; do return 0; done; echo $?;}; o 0 $ o(){ echo | while read -r; do return 1; done; echo $?;}; o 1 returnдолжен был выйти из функции...

16
Какова точная разница между «подоболочкой» и «дочерним процессом»?

Согласно этому и этому , подоболочка запускается с использованием круглых скобок (…). ( echo "Hello" ) В соответствии с этим , этим и этим процесс разветвляется, когда команда запускается с& echo "Hello" & Спецификация Posix использует слово subshellна этой странице, но не определяет его, а...

14
Ловушка наследуется подоболочкой?

Я попробовал следующий скрипт: #!/bin/bash trap 'echo "touching a file" && touch $FILE' EXIT foo1(){ echo "foo1" } foo(){ echo "foo" export FILE=${FILE:-/tmp/file1} } (foo1) foo Выход для вышеуказанного скрипта был: [root@usr1 my_tests]# ./test.sh foo1 foo touching a file Однако я ожидал,...

13
Как я могу получить pid subshell?

Как я могу получить pid subshell? Например: $ echo $$ 16808 Это не работает, потому что оригинальная оболочка расширяется $$: $ ( echo $$ ) 16808 Почему одинарные кавычки не работают? После того, как исходная оболочка удаляет одинарную кавычку, не расширяется ли подоболочка $$? $ ( echo '$$' ) $$...

13
Подсветка синтаксиса Bash для подоболочек

Учитывая большое количество вопросов , которые оказываются связанными с подоболочками в Bash ( «Почему не моя переменная прибавка в этом централизованной while readцикле ?»), Я просто подумала , что было бы очень хорошо , чтобы обратиться к некоторому редактору или службе , где код который будет...

11
Развернуть subshell перед его выполнением?

Я часто запускаю команды, используя подоболочки, и иногда мне хотелось бы расширить подоболочки, прежде чем я что-то запустил ... Таким образом, я мог проверить, что я делаю, и, возможно, отредактировать то, что должно произойти. Например, как я могу развернуть следующую командную строку перед ее...

11
Как сделать переменную из подоболочки доступной в родительской оболочке

Я написал быстрый и грязный скрипт для определения времени некоторых отчетов из веб-службы: BASE_URL='http://example.com/json/webservice/' FIRST=1 FINAL=10000 for report_code in $(seq 1 $FINAL); do (time -p response=$(curl --write-out %{http_code} --silent -O ${BASE_URL}/${report_code}) ) 2>...

11
Является ли вложенная оболочка тем же, что и дочерняя оболочка?

Есть два имени: подоболочка и дочерняя оболочка . Да, дочерний процесс будет запущен любым из этого: sh -c 'echo "Hello"' ( echo "hello" ) echo "$(echo "hello") echo "hello" | cat Все ли эквивалентны и имеют одно и то же имя? Все ли имеют одинаковые свойства? POSIX имеет это определение : Среда...