Perguntas com a marcação «subshell»

51
$ () É um subshell?

Eu entendo a sintaxe do subshell (<commands...>), é $()apenas um subshell do qual você pode recuperar valores variáveis? Nota: Isso se aplica ao bash 4.4 com base em palavras diferentes na

48
Por que (saída 1) não sai do script?

Eu tenho um script que não sai quando eu quero. Um script de exemplo com o mesmo erro é: #!/bin/bash function bla() { return 1 } bla || ( echo '1' ; exit 1 ) echo '2' Eu assumiria ver a saída: :~$ ./test.sh 1 :~$ Mas eu realmente vejo: :~$ ./test.sh 1 2 :~$ O ()encadeamento de comando...

31
Criação de subshell Bash com chaves

De acordo com isso , a colocação de uma lista de comandos entre chaves faz com que a lista seja executada no contexto atual do shell. Nenhum subshell é criado . Usando pspara ver isso em ação Esta é a hierarquia de processos para um pipeline de processos executado diretamente na linha de...

30
script shell de saída de um subshell

Considere este trecho: stop () { echo "${1}" 1>&2 exit 1 } func () { if false; then echo "foo" else stop "something went wrong" fi } Normalmente, quando funcé chamado, o script é finalizado, que é o comportamento pretendido. No entanto, se for executado em um sub-shell, como...

24
Regra para chamar o subshell no Bash?

Parece que eu entendi mal a regra do Bash para criar um subshell. Eu pensei que parênteses sempre cria um subshell, que roda como seu próprio processo. No entanto, este não parece ser o caso. No Snippet de código A (abaixo), o segundo sleepcomando não é executado em um shell separado (conforme...

24
Como posso detectar se estou em um subshell?

Estou tentando escrever uma função para substituir a funcionalidade do exitbuilt-in para me impedir de sair do terminal. Eu tentei usar a SHLVLvariável de ambiente, mas ela não parece mudar nos subshells: $ echo $SHLVL 1 $ ( echo $SHLVL ) 1 $ bash -c 'echo $SHLVL' 2 Minha função é a...

18
Por que uma variável é visível em um subshell?

O Learning Bash Book menciona que um subshell herdará apenas variáveis ​​de ambiente e descritores de arquivos etc., e que não herdará variáveis ​​que não são exportadas: $ var=15 $ (echo $var) 15 $ ./file # this file include the same command echo $var $ Como eu sei, o shell criará dois...

16
Função bash stateful

Eu gostaria de implementar uma função no Bash que aumenta (e retorna) uma contagem a cada chamada. Infelizmente, isso não parece trivial, pois estou invocando a função dentro de um subshell e, consequentemente, não pode modificar as variáveis ​​do shell pai. Aqui está a minha...

14
A armadilha é herdada por um subshell?

Eu tentei um script a seguir: #!/bin/bash trap 'echo "touching a file" && touch $FILE' EXIT foo1(){ echo "foo1" } foo(){ echo "foo" export FILE=${FILE:-/tmp/file1} } (foo1) foo A saída para o script acima foi: [root@usr1 my_tests]# ./test.sh foo1 foo touching a file No entanto, eu...

13
Como posso obter o pid de um subshell?

Como posso obter o pid de um subshell? Por exemplo: $ echo $$ 16808 Isso não funciona, porque o shell original se expande $$: $ ( echo $$ ) 16808 Por que as aspas simples não funcionam? Depois que o shell original remove as aspas simples, o subshell não se expande $$por si só? $ ( echo '$$'...

13
Destaque da sintaxe do bash dos subshells

Considerando a grande quantidade de perguntas que se relacionam aos subshells no Bash ("Por que minha variável não aumenta nesse loop canalizadowhile read ?"), Pensei que seria muito bom consultar um editor ou serviço onde o código que será executado em subshells é formatado de forma diferente do...

11
Expanda o subshell antes de executá-lo?

Costumo executar comandos usando subshells e, às vezes, gostaria de expandi-los antes de executar alguma coisa. Dessa forma, pude verificar o que estou fazendo e, possivelmente, editar o que está prestes a acontecer também. Por exemplo, como posso expandir a linha de comando a seguir antes de...

11
Um sub-shell é a mesma coisa que um sub-shell

Existem esses dois nomes: um subshell e um shell filho . Sim, um processo filho será iniciado por qualquer um destes: sh -c 'echo "Hello"' ( echo "hello" ) echo "$(echo "hello") echo "hello" | cat Todos são equivalentes e compartilham o mesmo nome? Todos compartilham as mesmas propriedades? O...