Bash kasa yapısında -) ne anlama geliyor?


1

Bir vaka yapısı içeren bir kod pasajı gördüm.

while true;
do
    case "$1" in
        --prepare)
            echo "prepare"
            ENV_PREPARE
            exit 0
            ;;
        --sleep)
            SLEEP_TIME=$2
            shift 2
            ;;
        --)
            shift
            break
            ;;
        *)
            echo "Internal error!"
            exit 1
            ;;
    esac
done

- - bash kasa yapısında hr ne anlama geliyor?

        --)
            shift
            break
            ;;


1
Bir anlamı yok. Sadece -- Bu durumda iki çizgi karakter. Birisi açıkça bu kodu senaryo argümanlarını ayrıştırmak için yazdı ve kullanarak kendi çözümleri ile gitti case. Oldukça eminim ki, aşağıdaki kodu araştırırsanız, orada bulabilirsiniz. $2 ve belki $3 ve bunun gibi. -- basitçe - "İşleme seçeneklerini durdur (başka seçenek yok), diğer tüm parametreler veridir" olarak kullanılır. Veriler nerede olabilir örneğin kaynak / hedef, vb ...
Alex

Yanıtlar:


4

Bash için özel bir şey ifade etmiyor.

Bu pasajın yazarı, iki kısa çizgiyi başka bir karakter olmadan kendiliğinden eşleştirmek istedi. Harfi harfine "--".

Özellikle GNU mirasına ait birçok Unix komut satırı aracı, “-” ifadesini sınırlayıcı olarak kullanmanıza izin verir; “bu noktadan sonra hiçbir şey bir seçenek olarak değerlendirilmemelidir; bu komut satırının geri kalanı argümanlardan oluşur (dosyalar üzerinde çalışan bir komutun dosya adlarının listesi gibi) ”. Bu şekilde, "--help" adlı bir dosyayı girerek silebilirsiniz:

 rm -- --help

Tutar rm "--help" in yardım deyimini görmek için uzun bir seçenek olduğunu düşünmekten. (Bu kötü bir örnek ama bence ne demek istediğimi anlıyorsun.)

Bence bu senaryonun yazarı “-” senaryosunda olduğu gibi çalışmasını istedi.

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.