Запитання з тегом «subshell»

2
Чи дійсно круглі дужки ставлять команду в підшарок?
З того, що я прочитав, введення команди в круглі дужки повинно запускати її в нижній частині, аналогічно виконанню сценарію. Якщо це правда, як вона бачить змінну x, якщо x не експортується? x=1 Запуск (echo $x)в командному рядку призводить до 1 Запуск echo $xсценарію не призводить до нічого, як очікувалося

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

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

3
Створення підшивки Bash з фігурними дужками
Відповідно до цього , розміщення списку команд між фігурними дужками спричиняє виконання списку в поточному контексті оболонки. Не створено підкашлю . Використовуючи, psщоб побачити це в дії Це ієрархія процесу для конвеєра процесу, який виконується безпосередньо в командному рядку. 4398 - PID для оболонки для входу: sleep 2 | ps …
31 bash  subshell 

6
скрипт вихідної оболонки з підшару
Розглянемо цей фрагмент: stop () { echo "${1}" 1>&2 exit 1 } func () { if false; then echo "foo" else stop "something went wrong" fi } Зазвичай, коли funcвін викликається, це призведе до припинення дії сценарію, що і є передбачуваною поведінкою. Однак, якщо він виконується в підколонці, наприклад в …

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

3
Правило для отримання додаткової оболонки в 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 …

2
Чому в нижній частині корпусу відображається змінна?
Книга Learning Bash згадує про те, що субшалл успадкує лише змінні середовища та дескриптори файлів тощо, і що він не буде успадковувати змінні, які не експортуються: $ var=15 $ (echo $var) 15 $ ./file # this file include the same command echo $var $ Як я знаю, оболонка створить дві …
18 bash  shell  subshell 

1
У zsh різниця між cat <(cat) vs cat | кішка проти кота = (кішка)?
Я очікував cat &lt;(cat)і cat | catзробити те саме: копіювати рядки зі stdin у stdout. Моє розуміння полягало в тому, що обидва будуть виконувати a catв нижній оболонці, перенаправляти catstdout нижньої catоболонки на тимчасово названу трубу, а потім виконувати іншу в поточній оболонці, а її stdin буде перенаправлений на трубу. …

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

5
Це помилка в баші? `return` не припиняє функцію, якщо викликається з труби
Останнім часом у мене виникають дивні проблеми з басом. Намагаючись спростити свій сценарій, я придумав цей невеликий фрагмент коду: $ 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мав …

5
Державна функція bash
Я хотів би реалізувати функцію в Bash, яка збільшує (і повертає) кількість при кожному виклику. На жаль, це здається нетривіальним, оскільки я викликаю функцію всередині підклітини, і, отже, не вдається змінити змінні його батьківської оболонки. Ось моя спроба: PS_COUNT=0 ps_count_inc() { let PS_COUNT=PS_COUNT+1 echo $PS_COUNT } ps_count_reset() { let PS_COUNT=0 …

3
Яка точна відмінність між «підрозділом» та «дочірнім процесом»?
Відповідно до цього та цього , підзаголовок запускається з використанням дужок (…). ( echo "Hello" ) Відповідно до цього , цього і цього , розгортається процес при запуску команди з a&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 Однак я очікував, що пастка буде викликана і при виході з …
14 shell  trap  subshell 

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.