Pytania otagowane jako subshell

2
Czy nawiasy naprawdę umieszczają polecenie w podpowłoce?
Z tego, co przeczytałem, umieszczenie polecenia w nawiasach powinno uruchamiać je w podpowłoce, podobnie jak uruchamianie skryptu. Jeśli to prawda, jak widzi zmienną x, jeśli x nie jest eksportowane? x=1 Uruchomienie (echo $x)w wierszu poleceń powoduje 1 Uruchomienie echo $xw skrypcie nie daje niczego, zgodnie z oczekiwaniami

3
Czy $ () jest podpowłoką?
Rozumiem, że jest to składnia podpowłoki. Czy (<commands...>)to $()tylko podpowłoka, z której można pobrać wartości zmiennych? Uwaga: dotyczy to wersji bash 4.4 opartej na różnych sformułowaniach w ich dokumentacji.
51 bash  subshell  syntax 

4
Dlaczego (wyjście 1) nie wychodzi ze skryptu?
Mam skrypt, który nie wychodzi, kiedy chcę. Przykładowy skrypt z tym samym błędem to: #!/bin/bash function bla() { return 1 } bla || ( echo '1' ; exit 1 ) echo '2' Zakładam, że zobaczę wynik: :~$ ./test.sh 1 :~$ Ale tak naprawdę widzę: :~$ ./test.sh 1 2 :~$ Czy …

3
Tworzenie podpowłoki za pomocą nawiasów klamrowych
Zgodnie z tym , umieszczenie listy poleceń między nawiasami klamrowymi powoduje, że lista jest wykonywana w bieżącym kontekście powłoki. Nie jest tworzona podpowłoka . Za pomocą, psaby zobaczyć to w akcji Jest to hierarchia procesów dla potoku procesu wykonywanego bezpośrednio w wierszu poleceń. 4398 to PID dla powłoki logowania: sleep …
31 bash  subshell 

6
zamknij skrypt powłoki z podpowłoki
Rozważ ten fragment: stop () { echo "${1}" 1>&2 exit 1 } func () { if false; then echo "foo" else stop "something went wrong" fi } Zwykle funcwywołanie powoduje zakończenie skryptu, co jest zamierzonym zachowaniem. Jednak jeśli jest wykonywany w podpowłoce, na przykład w result=`func` nie wyjdzie ze skryptu. …

3
Jak mogę sprawdzić, czy jestem w podpowłoce?
Próbuję napisać funkcję, która zastąpi funkcjonalność exitwbudowanego systemu, aby uniemożliwić mi wyjście z terminala. Próbowałem użyć SHLVLzmiennej środowiskowej, ale wydaje się, że nie zmienia się w podpowłokach: $ echo $SHLVL 1 $ ( echo $SHLVL ) 1 $ bash -c 'echo $SHLVL' 2 Moja funkcja jest następująca: exit () { …
24 bash  shell  exit  subshell 

3
Zasada wywoływania podpowłoki w Bash?
Wydaje mi się, że źle rozumiem zasadę Bash dotyczącą tworzenia podpowłoki. Myślałem, że nawiasy zawsze tworzą podpowłokę, która działa jako własny proces. Wydaje się jednak, że tak nie jest. W fragmencie kodu A (poniżej) drugie sleeppolecenie nie działa w osobnej powłoce (określonej przez pstreeinny terminal). Jednak we fragmencie kodu B …


2
Dlaczego zmienna jest widoczna w podpowłoce?
W Learning Bash Book wspomniano, że podpowłoka odziedziczy tylko zmienne środowiskowe i deskryptory plików itp. Oraz że nie odziedziczy zmiennych, które nie są eksportowane: $ var=15 $ (echo $var) 15 $ ./file # this file include the same command echo $var $ Jak wiem, powłoka utworzy dwie podpowłoki dla ()i …
18 bash  shell  subshell 

1
W zsh różnica między cat <(cat) vs cat | kot vs kot = (kot)?
Spodziewałem się cat &lt;(cat)i cat | catzrobię to samo: skopiuj wiersze ze standardowego wejścia na standardowe wyjście. Zrozumiałem, że oba wykonałyby a catw podpowłoce, przekierowały catstdout podpowłoki do tymczasowej nazwanej potoki, a następnie wykonały inną catw bieżącej powłoce ze stdin przekierowanym do potoku. Zamiast tego cat &lt;(cat)pozwala mi pisać na …



5
Stanowa funkcja bash
Chciałbym zaimplementować funkcję w Bash, która zwiększa (i zwraca) liczbę przy każdym wywołaniu. Niestety wydaje się to nietrywialne, ponieważ wywołuję funkcję wewnątrz podpowłoki, w związku z czym nie może ona modyfikować zmiennych powłoki nadrzędnej. Oto moja próba: PS_COUNT=0 ps_count_inc() { let PS_COUNT=PS_COUNT+1 echo $PS_COUNT } ps_count_reset() { let PS_COUNT=0 } …


3
Czy pułapka jest dziedziczona przez podpowłokę?
Próbowałem następującego skryptu: #!/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 Dane wyjściowe powyższego skryptu były następujące: [root@usr1 my_tests]# ./test.sh foo1 foo touching a file Jednak spodziewałem się, że pułapka zostanie również wywołana przy wyjściu z …
14 shell  trap  subshell 

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.