'-V' ve '-x' argümanları bash için ne anlama geliyor?


17

Aşağıdaki shebang ile kabuk komut dosyaları bir çift gördük:

#!/bin/bash -x -v 

Ancak, man bashYa bu argümanları açıklamıyor -xve -vonlar aittir ise, ayakta bashhiç.

Peki bunlar -xve -v(ve diğer olası argümanlar) ne anlama geliyor?

Yanıtlar:


26

Gönderen man bash(evet, bu büyük bir adam sayfası, genellikle Google arama hızlıdır):

-x Her basit komutu genişlettikten sonra, komut, büyük / küçük harf komutu, select komutu veya komut için aritmetik için, PS4'ün genişletilmiş değerini, ardından komutu ve genişletilmiş bağımsız değişkenlerini veya ilişkili sözcük listesini görüntüleyin.

Etkili: Bir komut dosyasını çalıştırdığınızda, o komut dosyasında yapılan tüm eylemleri gösterir. Yani tüm ifs, döngüler ve komutlar çalışır. Hata ayıklama için çok faydalıdır.

-v Kabuk giriş satırlarını okundukları gibi yazdırın. Bir komut dosyası çalıştırıldığında, komut dosyasını dosyayı okurken yazdırır. Kabuğu etkileşimli olarak kullandığınızda, enter tuşuna bastıktan sonra her komutu gösterir.

Yukarıdaki alıntılar , içindeki seçeneklerin argüman olarak da (shebang satırında) iletilebileceğini açıklayan setyerleşik komutun açıklamasından alınmıştır :man bashset

Aksi belirtilmedikçe seçenekler varsayılan olarak kapalıdır. Bunun + yerine -bu seçeneklerin kapatılmasına neden olur. Seçenekler, kabuğun çağrılması için bağımsız değişkenler olarak da belirtilebilir. Geçerli seçenekler kümesi içinde bulunabilir $-. Geçersiz bir seçenekle karşılaşılmadığı sürece dönüş durumu her zaman doğrudur.


Tamam, bu bash için basit bir argüman ve ben sadece bu argümanlar olmadan farklı bir sürümü olabilir?
Alex

Eğer bash hakkında konuşuyorsanız: Geçen on yılın tüm bash sürümlerinin bu argümanları destekleyeceğini düşünüyorum. Man sayfası hakkında konuşuyorsanız: çok büyük ve ne aradığınızı bilmeniz gerekiyor, ancak orada (en azından Ubuntu 13.04'te). Genellikle bir Google araması daha hızlıdır.
mtak

6
+1 "Google araması daha hızlı" -> /-xsizi birkaç kez oraya götürür man(aslında, bu less). Son aramayı /+ yukarı ok ile tekrarlayabilirsiniz , ancak mevcut herhangi bir aramanın ekrandan çıkmasını sağlamak için sayfayı aşağı kaydırmanız gerekir ( /ileriye doğru arama, ?geriye doğru).
goldilocks

2
@ TAFKA'goldilocks 'Sanırım dağıtımınıza bağlı. Ubuntu 13.04 bash manuel sayfasında 43. hit doğru olanıdır. nİleri arama ve Ngeri arama için bir sonraki isabeti daha az aramak daha kolaydır .
mtak

Hata! Aslında test -xKOŞULLU ANLATIMLAR (üçüncü vuruş) altında bakıyordum , değil set -x. -xiçinde man bashdaha spesifik almak yardımcı böylece oldukça kötü bir durumdur: Eğer kullanırsanız /^\s+-x\b, (= çizgi + boşluk + başlangıcı -xEğer 5 isabetlerde Doğruya ulaşmak + kelime sınır) ... o 4 olmuştu ama aslında için olurdu xmaçları X... bu da sormam gereken bir soruya yöneliyor . Her neyse, çoğu man sayfaları ile birlikte ^\s+-x\bdesen ilk önce anahtarları denemelidir.
goldilocks

2

Bash man sayfası , bu seçeneklerin daha ayrıntılı olarak açıklanacağını ima ediyor, ancak kolayca gözden kaçıyor.

Bu nedenle sorununuz aslında şöyle olmalıdır: Bash man sayfasının OPTIONS bölümü eksik. Cevap, onları çoğaltmak veya SEÇENEKLER bölümünün ilk bölümünü vurgulamak olacaktır:

OPTIONS
   All  of  the  single-character shell options documented in the descrip‐
   tion of the set builtin command can be used as options when  the  shell
   is invoked.  [ ... ]

Son olarak, bunu tamamlamak için: read ( -v) ve run ( -x) komut dosyalarının kodunu göstermek için herhangi bir POSIX kabuğu için standart seçeneklerdir . Çıktı stderr'de görünecektir.

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.