Yanıtlar:
Daha doğrusu, --
bash yerleşik komutlarında ve komut seçeneklerinin sonunu belirtmek için birçok komutta bir çift tire ( ) kullanılır, bundan sonra sadece konumsal parametreler kabul edilir.
Örnek kullanım: dize için bir dosya grep etmek istediğinizi varsayalım -v
- normal -v
olarak eşleme anlamını tersine çevirme seçeneği olarak kabul edilir (yalnızca eşleşmeyen satırları göster), ancak --
sizinle bunun için grep yapabilirsiniz -v
:
grep -- -v file
--
içindeki düzgün anlatımlardan seçenekleri ayırmak için çalışır grep
, ancak kurallı yolu kullanmaktır -e
/ --regexp
.
--
yukarıdaki örneğimin de grep -e -v file
(çok kafa karıştırıcı olmasına rağmen) yazılabileceğini belirtmekte haklısınız.
bash
yerleşik komutlar --
seçenek işaretleyicinin sonu olarak kabul edilmez. [
ve echo
örneğin yok ( sebeplerden biri echo
güvenilir şekilde kullanılamaz ).
Gelen man bash
biz okuyabilir Shell Yerleşik Komutları bölümünde:
Aksi belirtilmediği sürece, bu bölümde belgelenen her yerleşik komut , seçeneklerin sonunu belirtmek için önceden kabul edilen seçenekleri
-
kabul--
etmiş sayılır .
:
,true
,false
Vetest
yerleşikleri seçenekleri kabul etmiyoruz ve tedavi etmiyoruz--
özel.exit
,logout
,break
,continue
,let
, Veshift
yerleşikleri kabul edip işlem argümanlar ile başlayan-
gerektirmeden--
. Argümanları kabul eden, ancak seçenek kabul etme olarak belirtilmeyen diğer yerleşikler,-
geçersiz seçeneklerle başlayan argümanları yorumluyor ve--
bu yorumlamayı engellemeyi gerektiriyor .Seçeneklerin sonu anlamına
echo
gelmediğini yorumlamadığını unutmayın--
.
man bash
(bir dahaki sefere kendi kendine not:).
POSIX.1-2017
12.2 Yardımcı Program Sözdizimi Kuralları
İlke 10:
--
Bir seçenek argümanı olmayan ilk argüman, seçeneklerin sonunu gösteren bir sınırlayıcı olarak kabul edilmelidir. Aşağıdaki herhangi bir argüman '-
' karakteriyle başlasalar bile, operand olarak değerlendirilmelidir .
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02
set
kesinlikle yerleşik olması gereken Bash yerleşiklerinde.