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

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

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


3
Создание оболочки Bash с помощью фигурных скобок
В соответствии с этим , размещение списка команд между фигурными скобками приводит к тому, что список выполняется в текущем контексте оболочки. Никакая подоболочка не создана . Используя, psчтобы увидеть это в действии Это иерархия процессов для конвейера процессов, выполняемого непосредственно в командной строке. 4398 - это PID для оболочки входа …
31 bash  subshell 

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

3
Как я могу определить, что я нахожусь в подоболочке?
Я пытаюсь написать функцию, чтобы заменить функциональность exitвстроенной, чтобы предотвратить выход из терминала. Я попытался использовать SHLVLпеременную окружения, но она не меняется внутри подоболочек: $ echo $SHLVL 1 $ ( echo $SHLVL ) 1 $ bash -c 'echo $SHLVL' 2 Моя функция заключается в следующем: exit () { if [[ …
24 bash  shell  exit  subshell 

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

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

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

1
В zsh разница между cat <(cat) и cat | кошка против кошки = (кошка)?
Я ожидал cat &lt;(cat)и cat | catсделать то же самое: скопировать строки из стандартного ввода в стандартный вывод. Насколько я понимаю, оба выполняли бы catв подоболочке, перенаправляли catstdout подоболочки во временный именованный канал, а затем выполняли другой catв текущей оболочке с его stdin, перенаправленным в канал. Вместо этого cat &lt;(cat)позволяет …

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

5
Это ошибка в 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 …

5
Stateful функция Bash
Я хотел бы реализовать функцию в Bash, которая увеличивает (и возвращает) счетчик при каждом вызове. К сожалению, это кажется нетривиальным, так как я вызываю функцию внутри подоболочки и, следовательно, она не может изменять переменные родительской оболочки. Вот моя попытка: PS_COUNT=0 ps_count_inc() { let PS_COUNT=PS_COUNT+1 echo $PS_COUNT } ps_count_reset() { let …

3
Какова точная разница между «подоболочкой» и «дочерним процессом»?
Согласно этому и этому , подоболочка запускается с использованием круглых скобок (…). ( echo "Hello" ) В соответствии с этим , этим и этим процесс разветвляется, когда команда запускается с&amp; echo "Hello" &amp; Спецификация Posix использует слово subshellна этой странице, но не определяет его, а также на той же странице …
16 bash  shell  subshell 

3
Ловушка наследуется подоболочкой?
Я попробовал следующий скрипт: #!/bin/bash trap 'echo "touching a file" &amp;&amp; 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 Однако я ожидал, что trap-сообщение также будет вызвано при выходе из …
14 shell  trap  subshell 

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.