«subshell» etiketlenmiş sorular

2
Parantezler gerçekten komutu alt kabuklara mı koyuyor?
Okuduklarımdan, bir komutu parantez içine almak, bir betiği çalıştırmaya benzer şekilde bir alt kabukta çalıştırmalıdır. Bu doğruysa, eğer x dışa aktarılmazsa x değişkenini nasıl görür? x=1 (echo $x)Komut satırında çalışan 1 ile sonuçlanır echo $xBir komut dosyasında çalıştırma , beklendiği gibi hiçbir şeyle sonuçlanmaz

3
$ () Bir alt kabuk mu?
Ben olmak altkabuk sözdizimini anlamak (<commands...>)olduğunu, $()aralarından değişken değerleri almak bir alt kabuk sadece? Not: Bu, belgelerinde farklı ifadelere dayanarak bash 4.4 için geçerlidir.
51 bash  subshell  syntax 

4
Neden (1. çıkış) komut dosyasından çıkmıyor?
İstediğimde çıkmayan bir betiğim var. Aynı hatayı içeren bir örnek komut dosyası: #!/bin/bash function bla() { return 1 } bla || ( echo '1' ; exit 1 ) echo '2' Çıktıyı görmeyi varsayardım: :~$ ./test.sh 1 :~$ Ama aslında görüyorum ki: :~$ ./test.sh 1 2 :~$ Does ()nasılsa zincirleme komut, …

3
Kıvırcık parantez ile Bash alt kabuk oluşturma
Göre , bu , çengelli parantez komutları listesini yerleştirilmesi geçerli kabuk bağlamında yürütülecek listesini neden olur. Alt kabuk oluşturulmaz . psBunu çalışırken görmek için kullanma Bu, doğrudan komut satırında yürütülen bir işlem hattı için işlem hiyerarşisidir. 4398, giriş kabuğu için PID'dir: sleep 2 | ps -H; PID TTY TIME CMD …
31 bash  subshell 

6
Alt kabuktan kabuk betiğinden çık
Bu pasajı göz önünde bulundurun: stop () { echo "${1}" 1>&2 exit 1 } func () { if false; then echo "foo" else stop "something went wrong" fi } Normal funcolarak çağrıldığında, komut dosyasının sonlandırılmasına neden olur, bu amaçlanan davranıştır. Ancak, aşağıdaki gibi bir alt kabukta yürütülürse, result=`func` komut dosyasından …

3
Bir deniz kabuğu altında olup olmadığını nasıl anlayabilirim?
exitKendimi terminalden çıkmamak için yerleşikin işlevselliğini değiştiren bir işlev yazmaya çalışıyorum . SHLVLOrtam değişkenini kullanmaya çalıştım, ancak alt kabuklarda değişmiyor gibi görünüyor: $ echo $SHLVL 1 $ ( echo $SHLVL ) 1 $ bash -c 'echo $SHLVL' 2 Benim işlevim aşağıdaki gibidir: exit () { if [[ $SHLVL -eq 1 …
24 bash  shell  exit  subshell 

3
Bash'de alt kabuğu çağırmanın kuralı?
Bir subshell oluşturmak için Bash kuralını yanlış anlamış gibiyim. Parantezlerin daima kendi süreci olarak çalışan bir alt kabuk yarattığını düşündüm. Ancak, durum böyle görünmüyor. Kod Parçacığı A'da (aşağıda), ikinci sleepkomut ( pstreebaşka bir terminalde belirlendiği gibi) ayrı bir kabukta çalışmaz . Ancak, Kod Parçacığı B'de, ikinci sleepkomut mu ayrı kabukta …

3
Bu komut dosyası yalnızca bir örneğinin çalışmasını nasıl sağlar?
19 Ağustos 2013 tarihinde, Randal L. Schwartz , Linux'ta, "[b] betiğinin yalnızca bir örneğinin yarış koşulları olmadan veya kilit dosyalarını temizlemek zorunda kalmadan" çalışmasını sağlamak için tasarlanan bu kabuk betiğini yayınladı : #!/bin/sh # randal_l_schwartz_001.sh ( if ! flock -n -x 0 then echo "$$ cannot get flock" exit 0 …

2
Bir değişken alt kabukta neden görünür?
Learning Bash Book, bir alt kabuğun yalnızca ortam değişkenlerini ve dosya tanımlayıcılarını vb. Devralacağını ve dışa aktarılmayan değişkenleri devralmayacağını belirtir: $ var=15 $ (echo $var) 15 $ ./file # this file include the same command echo $var $ Bildiğim gibi, kabuk için ()ve için iki alt kabuk oluşturacak ./file, ancak …
18 bash  shell  subshell 

1
In zsh, cat <(cat) vs cat arasındaki fark | kedi vs kedi = (kedi)?
Beklediğim cat &lt;(cat)ve cat | cataynı şeyi yapmak: stdin stdout satırları kopyalayın. Anladığım kadarıyla, her ikisi de catbir alt kabukta a yürütecek , alt kabuğun stdout'unu catgeçici bir adlandırılmış boruya yönlendirecek ve daha sonra catmevcut kabukta başka bir parçayı boruya yönlendirilmiş olacaktı. Bunun yerine, cat &lt;(cat)terminalime yazmama izin verin, ancak …



5
Durum bilgisi olan bash işlevi
Bash'te her çağrıda bir sayıyı artıran (ve döndüren) bir işlev uygulamak istiyorum. Ne yazık ki bu önemsiz gibi görünüyor çünkü bir alt kabuk içindeki işlevi çağırıyorum ve sonuç olarak üst kabuğunun değişkenlerini değiştiremiyor. İşte benim girişimim: PS_COUNT=0 ps_count_inc() { let PS_COUNT=PS_COUNT+1 echo $PS_COUNT } ps_count_reset() { let PS_COUNT=0 } Bu …

3
“Alt kabuk” ve “alt süreç” arasındaki kesin fark nedir?
Göre bu ve bu , bir alt kabuk parantez kullanılarak başlatılır (…). ( echo "Hello" ) Göre bu , bu ve bu komut a ile başlatıldığında, bir süreç çatallı&amp; echo "Hello" &amp; Posix belirtimi bu sayfadaki sözcüğüsubshell kullanır ancak tanımlamaz ve aynı sayfada "alt işlem" tanımlamaz . Her ikisi de …
16 bash  shell  subshell 

3
Tuzak bir alt kabuk tarafından miras alınır?
Aşağıdaki komut dosyasını denedim: #!/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 Yukarıdaki komut dosyasının çıktısı şöyleydi: [root@usr1 my_tests]# ./test.sh foo1 foo touching a file Ancak tuzağın da çıkışta çağrılmasını bekliyordum foo1, ki bu da alt …
14 shell  trap  subshell 

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.