Bash içindeki borulu komutlarla değerden çık


1

Bir komutun çıktısı bash'ta bir başkasına verildiğinde, hangi komutun çıkış değeri ( $?değişken) döndürülür? Çıktının alındığı komut veya çıktının alındığı komut?

Örneğin, komutta:

git diff | vim -

Misiniz $?değişken gelen git diffkomutla veya vim -komuta?

Yanıtlar:


5

Boruda son komut.

$ false | echo -n
$ echo $?
0

$ true | echo -n
$ echo $?
0

$ true | echo -n | false
$ echo $?
1

5

man bash diyor:

   ?      Expands to the exit status of the most recently  executed  fore
          ground pipeline.

Ve:

   The return status of a pipeline is the exit status of the last command,
   unless the pipefail option is enabled.

1

$?Bir boru hattında son çalıştırılan komutun durumunu korur, ancak kullanmak boru hattı içinde bir komutun durumunu kontrol etmek istiyorsanız PIPESTATUSolduğunu değişkeni,

En son yürütülen ön plan boru hattındaki (yalnızca tek bir komut içerebilen) işlemlerden çıkış durum değerlerinin bir listesini içeren bir dizi değişkeni (bkz. Diziler).

Örneğinizde, iade durumu git diffokunabilir ${PIPESTATUS[0]}.

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.