Komut satırında parantezler nasıl yorumlanır?


45

Nasıl kurulacağını okurken grub, aşağıdaki iki sözdiziminden birini kullanmam gerektiğini söyleyen bir makale ile karşılaştım.

echo \(hd0,0\) >> /boot/grub/grub.conf

veya

echo '(hd0,0)' >> /boot/grub/grub.conf

çünkü komut satırında parantez içinde özel bir yorum yapılır. Parantezlerde özel olan nedir? Nasıl yorumlanırlar?

Yanıtlar:


46

Parantezler bash içinde bir alt kabuğa işaret eder. man bashSayfayı alıntılamak için :

(list)    list  is  executed  in  a  subshell  environment (see COMMAND
          EXECUTION ENVIRONMENT below).  Variable assignments and builtin 
          commands that affect the shell's environment do not remain in 
          effect after the command completes.  The return status is the
          exit status of list.

a listsadece normal bir komut dizisidir.

Bu aslında oldukça taşınabilir ve sadece basholsa belirli değil . POSIX Kabuk Komut Dili Spec için aşağıdaki açıklama vardır (compound-list)sözdizimi:

Bileşik listesini alt kabuk ortamında yürütün ; bkz. Kabuk Yürütme Ortamı . Çevreyi etkileyen değişken atamalar ve yerleşik komutlar liste bittikten sonra geçerli olmayacaktır.


Bash ve diğer mermilerde ...?
jasonwryan

3
hakkında sormak istediğim şey bash ...
Steve Brown

5
Arasındaki fark nedir $()ve ()?
CMCDragonkai

5
@ CMCDragonkai $()Komut değiştirme, ()bir alt kabuktur . Her ikisi de komutları çalıştırır, fark çıktıya olan şeydir. İsimleri aramak, sembollerden daha kolaydır. Ayrıca bakınız unix.stackexchange.com/q/213530/9537
jw013

12

Parantez arasına gömülmüş bir komut listesi alt kabuk olarak çalışır.

Alt kabuktaki değişkenler, alt kabuktaki kod bloğunun dışında görünmez. Ana işleme, alt kabuğu başlatan kabuğa erişemezler. Bunlar aslında yerel değişkenlerdir.

Linuxtopia'ya bakın - Bölüm 20. Alt kabuklar

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.