SORU
4 HAZİRAN 2009, PERŞEMBE


Nasıl bir bash komut dosyası hata ayıklamak için?

Bir bash komut dosyası hata ayıklamak için herhangi bir yolu var mı? Yürütme günlük bir tür baskılar bir şey "hat 1 çağrı", "hat 2" vb. çağıran E. g gibi

CEVAP
4 HAZİRAN 2009, PERŞEMBE


sh -x script [arg1 ...]
bash -x script [arg1 ...]

Bu seni idam ediliyor ne bir iz ver. ('Açıklama' cevabı altına yakın.)

Bazen, komut dosyası içinde hata ayıklama kontrol etmek gerekir. 27* reminded *bu durumda, beni kullanabilirsiniz:

set -x

Bu hata ayıklamayı açar. Sonra tekrar kapatabilirsiniz:

set  x

($- geçerli bayraklar, x.) analiz ederek mevcut izleme durumunu öğrenebilirsiniz

Ayrıca, kabukları genellikle bulunur seçenekleri '-n' için 'idam' ve '-v' için 'ayrıntılı' modunda kullanabilirsiniz bu kombinasyon olup olmadığını görmek için kabuk düşünüyor olabilir yürütmek script — bazen yararlı eğer dengesiz bir alıntı bir yerde.


'-x' Bash seçeneği diğer kabukları (yorum) farklıdır. bu çekişme var Bash Manual diyor ki:

  • -x

    Baskı izleme basit komutları, for komutları case komutları select komutları, aritmetik for komutları ve onların bağımsız veya ilişkili sözcük listeleri sonra genişletilmiş ve önce onlar idam edildi. PS4 değişken değeri genişletilir ve sonuç değeri komutu ve genişletilmiş argümanları önce yazdırılır.

O kadar farklı bir davranış belirtmek için hiç görünmüyor. Diğer ilgili kaynaklar '-x' el göremiyorum. Başlatma sırası farklılıkları açıklayın.

Açıklama: Sistemleri gibi tipik bir Linux kutusu, '/bin/sh' sembolik '/bin/bash' (ya da her neresiyse Bash çalıştırılabilir bulundu), iki komut satırı elde edilen eş etkili çalıştırılması ile yürütme izleme. Diğer sistemler (örneğin, Solaris, ve Linux biraz daha modern türevleri), /bin/sh Bash, ve iki komut satırlarını (biraz) farklı sonuçlar verecektir. En önemlisi, '20* *' hiç tanımadığı Bash yapıları ile karışık olur. (Solaris, /bin/sh Bourne shell; modern Linux üzerinde, bazen eğlenceli, daha sıkı POSIX — sadece küçük bir kabuk.) Bu gibi adıyla çağrıldığında, 'satır ('#!/bin/bash 'vs') başlatma dosyasının içeriğini nasıl yorumlandığı üzerinde hiçbir etkisi yoktur 23**. mesele

Bash manuel bir bölüm Bash POSIX mode hangi, aksine uzun soluklu ama hatalı sürümü bu cevap (Ayrıca bakınız aşağıya yorum), tarif geniş ayrıntı arasındaki farkı 'Bash çağrılan sh' ve 'Bash çağrılan olarak bash'.

(Bash) bir kabuk ayıklarken, mantıklı ve aklı başında — hatta gerekli — -x seçeneği ile kabuk mesele line adlı kullanılması daha doğru olur. Aksi takdirde, olabilir (?) bu komut çalıştırılırken hata ayıklama zaman farklı davranış.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • apenney888

    apenney888

    27 EKİM 2010
  • makemebad35

    makemebad35

    17 NİSAN 2006
  • williamfitzsimmons

    williamfitzs

    14 Mart 2008