Nedir ;; sh içinde mi?


28

a;;bSh ile çalıştırmayı denersem, bu hatayı alıyorum:

sh: <number>: Syntax error: ";;" unexpected

Ben denerseniz a;;;baynı hatayı alıyorum, değil ;;;yerine ;;ben düşünüyorum, böylece ;;araç şey ben demek bilmiyorum rağmen.

İşte bir örnek:

$ echo A;;echo B
sh: 1: Syntax error: ";;" unexpected
$ echo A;;;echo B
sh: 1: Syntax error: ";;" unexpected
$ echo A; ;echo B
sh: 1: Syntax error: ";" unexpected

Burada , hata ; ;yerine ;;kullandığımda daha ;önce bir komut olmadan kullandığım gerçeğiyle ilgili olarak farklı olduğunu görebilirsiniz . ;;Neye uygulandığını bilmeme rağmen, farklı bir operatör gibi görünüyor.


1
Google’da arama yapılamıyor ;;ve burada bir dupe bulamadım.
EKons

3
Googled "sh çift noktalı virgül" ... ... stackoverflow.com/questions/16905183/…
muru

@muru Buraya henüz gönderilmemiş olmasına rağmen bence.
EKons

@ ΈρικΚωνσταντόπουλος SymbolHound, symbolhound.com için budur
Joe

Yanıtlar:


47

;;POSIX kabuklarındaki a case... esacyapısında ifadeleri ayırır :

case foo in (a) cmd1; cmd2 ;; (b) cmd3; cmd4; esac

Bir komut hakkında bilgi edinmek için koşabilirsiniz man that-command. Çağrı cihazınız ise less, man sayfasının içinde tuşuna basarak arama yapabilirsiniz /.

Burada, kaçardım man shve aramak ;;. Bazı mermiler caseifadeleri ayırmak için diğer operatörleri destekler ( ;&in ksh93/ zsh/ bash/ mksh, &|in zsh/ mksh, ;;&in gibi bash).


1
Buraya yeni bir mesaj gönderdim çünkü zaten burada böyle bir soru olması gerektiğini düşünüyorum, çünkü burada birisinin kafası karışırsa daha net bir şekilde açıklanabilir.
EKons

2
Çok fazla isabet varsa veya arama yapmak için kaçış kurallarını hatırlayamıyorsanız, lessbazen kullanışlı olabilir$ man bash|grep -C1 ';;'
utanmadan

Sen olmamalıdır (önce a)ve b)ve ihtiyacınız ;;sonracmd4
barmar

@Barmar, bu sözdizimi POSIX. Bourne kabuğunda, ihmal etmek zorunda kaldı (gerçekten, ama yine de gerek yoktu ;;önce esac(o zarar vermedi gerçi).
Stéphane Chazelas

Teşekkürler. POSIX kabuğundaki bu değişikliği ya da sonuncusunun ;;isteğe bağlı olduğunu bilmiyordum .
Barmar
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.