Mevcut, yardımcı cevapları tamamlamak için; Ayrı bir cevap göndermem konusunda beni teşvik ettiği için şapkanın QZ Destek bölümüne ipucu :
Burada iki farklı mekanizma devreye giriyor:
olup, (a) cut
kendisine iletilen (bu durumda alanı) sınırlayıcı gerektiren -d
seçenek bir olduğu ayrı bir argüman ya da ekler için kabul edilebilir olup olmadığı , doğrudan için -d
.
(b) kabuğun argümanları genellikle çağrılan komuta iletmeden önce nasıl ayrıştırdığı.
(a) kamu hizmetleri için POSIX yönergelerinden bir alıntı ile cevaplanır (benimkini vurgulayın)
Standart bir yardımcı gösterir ÖZET bir ile bir seçenek ise , zorunlu bir seçenek-değişken [...] bir uygun uygulama kullanmak zorundadır ayrı bu seçenek ve seçenek-değişken için bağımsız değişkeni . Ancak , bir uygun uygulama olacaktır da karakterleri müdahale olmadan aynı argüman dizesinde seçeneği ve seçenek-argüman belirtmek etmelerine izin vermek .
Başka bir deyişle: Bu durumda, çünkü -d
bireyin seçenek-argümanı zorunlu , şunları yapabilirsiniz seçim sınırlayıcı olarak belirtmek ister :
- EITHER: ayrı bir tartışma
- (d) VEYA: doğrudan bağlı
-d
bir değer olarak .
(S) veya (d) 'yi seçtikten sonra, kabuğun dize değişmez ayrıştırma - (b) - önemlidir:
Yaklaşım (lar) ile aşağıdaki formların hepsi EŞDEĞER:
-d ' '
-d " "
-d \<space> # <space> used to represent an actual space for technical reasons
(D) yaklaşımıyla , aşağıdaki formların hepsi EŞDEĞERDİR:
-d' '
-d" "
"-d "
'-d '
d\<space>
Eşdeğerlik, kabuğun string-literal işlemesi ile açıklanmaktadır:
Tüm içinde sonucunda Yukarıdaki çözümler aynı dize zaman (her grupta) cut
onları görür :
(ler) : cut
görür -d
onun gibi kendi bir takip argüman, ayrı bir uzay karbonlaşmış madde içeren argüman - tırnak veya olmadan \
öneki !.
(d) : artı bir boşluk karakteri cut
görür - tırnak işaretleri veya önek olmadan ! - aynı argümanın bir parçası olarak .-d
\
İlgili gruplardaki formların sonuçta özdeş olmasının nedeni, kabuğun dize değişmezlerini nasıl ayrıştırdığına bağlı olarak iki yönlüdür :
- Kabuk belirtilmesi hazır sağlar olduğu gibi boyunca adı verilen bir mekanizma alıntı sunar, çeşitli formları :
- tek tırnaklı dizeler: içerideki içerik tam anlamıyla
'...'
alınır ve tek bir argüman oluşturur
- çift tırnaklı dizeler: içerideki içerikler
"..."
de tek bir argüman oluşturur, ancak enterpolasyona tabidir ( $var
komut ikameleri ( $(...)
veya `...`
) veya aritmetik açılımlar ( $(( ... ))
) gibi değişken referanslarını genişletir .
\
arasında -quoting ayrı karakterler : bir \
tek karakteri, önceki karakter hazır olarak yorumlanmalıdır neden olur.
- Alıntı, tırnak işareti kaldırılarak tamamlanır , yani kabuk bir komut satırını ayrıştırdıktan sonra tırnak karakterlerini bağımsız değişkenlerden (çevreleyen veya veya örnekler) kaldırır - dolayısıyla, çağrılan komut tırnak karakterlerini asla görmez .
'...'
"..."
\