Preguntas etiquetadas con subshell

51
¿Es $ () una subshell?

Entiendo que la sintaxis de subshell es (<commands...>), ¿es $()solo una subshell de la que puede recuperar valores variables? Nota: Esto se aplica a bash 4.4 basado en una redacción diferente en su

48
¿Por qué (salida 1) no sale del script?

Tengo un script que no sale cuando lo quiero. Un script de ejemplo con el mismo error es: #!/bin/bash function bla() { return 1 } bla || ( echo '1' ; exit 1 ) echo '2' Supongo que vería la salida: :~$ ./test.sh 1 :~$ Pero en realidad veo: :~$ ./test.sh 1 2 :~$ ¿El ()comando...

31
Creación de subshell Bash con llaves

De acuerdo con esto , colocar una lista de comandos entre llaves hace que la lista se ejecute en el contexto de shell actual. No se crea ninguna subshell . Usando pspara ver esto en acción Esta es la jerarquía de proceso para una tubería de proceso ejecutada directamente en la línea de comando....

30
salir del script de shell desde un subshell

Considere este fragmento: stop () { echo "${1}" 1>&2 exit 1 } func () { if false; then echo "foo" else stop "something went wrong" fi } Normalmente cuando funcse llama provocará que el script finalice, que es el comportamiento previsto. Sin embargo, si se ejecuta en un sub-shell,...

24
¿Regla para invocar subshell en Bash?

Parece que no entiendo la regla de Bash para crear una subshell. Pensé que los paréntesis siempre crean una subshell, que se ejecuta como su propio proceso. Sin embargo, este no parece ser el caso. En el fragmento de código A (a continuación), el segundo sleepcomando no se ejecuta en un shell...

24
¿Cómo puedo detectar si estoy en una subshell?

Estoy tratando de escribir una función para reemplazar la funcionalidad del exitincorporado para evitar que salga del terminal. Intenté usar la SHLVLvariable de entorno pero no parece cambiar dentro de las subcapas: $ echo $SHLVL 1 $ ( echo $SHLVL ) 1 $ bash -c 'echo $SHLVL' 2 Mi función es la...

18
¿Por qué es una variable visible en una subshell?

Learning Bash Book menciona que una subshell heredará solo variables de entorno y descriptores de archivos, etc., y que no heredará variables que no se exportan: $ var=15 $ (echo $var) 15 $ ./file # this file include the same command echo $var $ Como sé, el shell creará dos subshell para ()y...

16
Función bash con estado

Me gustaría implementar una función en Bash que aumente (y devuelva) un recuento con cada llamada. Desafortunadamente, esto no parece trivial ya que estoy invocando la función dentro de una subshell y, en consecuencia, no puede modificar las variables de su shell principal. Aquí está mi...

14
¿La trampa es heredada por una subshell?

Intenté un siguiente script: #!/bin/bash trap 'echo "touching a file" && touch $FILE' EXIT foo1(){ echo "foo1" } foo(){ echo "foo" export FILE=${FILE:-/tmp/file1} } (foo1) foo El resultado para el script anterior fue: [root@usr1 my_tests]# ./test.sh foo1 foo touching a file Sin...

13
¿Cómo puedo obtener el pid de una subshell?

¿Cómo puedo obtener el pid de una subshell? Por ejemplo: $ echo $$ 16808 Esto no funciona porque el shell original se expande $$: $ ( echo $$ ) 16808 ¿Por qué no funciona la comilla simple? Después de que el shell original elimina la comilla simple, ¿el subshell no se expande $$en sí mismo? $...

13
Resaltado de sintaxis Bash de subcapas

Teniendo en cuenta la gran cantidad de preguntas que resultan estar relacionadas con subcapas en Bash ("¿Por qué no aumenta mi variable en este bucle canalizadowhile read ?"), Pensé que sería muy bueno referirme a algún editor o servicio donde el código que se ejecutará en subshells está formateado...

11
Ampliar subshell antes de ejecutarlo?

A menudo ejecuto comandos usando subshells, y a veces me gustaría expandir los subshells antes de ejecutar algo. De esta manera podría verificar lo que estoy haciendo y posiblemente editar lo que está por suceder también. Por ejemplo, ¿cómo puedo ampliar la siguiente línea de comando antes de...

11
¿Es un sub-shell lo mismo que un child-shell?

Existen estos dos nombres: un subshell y un shell secundario . Sí, se iniciará un proceso secundario por cualquiera de estos: sh -c 'echo "Hello"' ( echo "hello" ) echo "$(echo "hello") echo "hello" | cat ¿Son todos equivalentes y comparten el mismo nombre? ¿Todos comparten las mismas...