Düzeltme: Beklenmeyen belirteç `('yakınındaki Sözdizimi Hatası

Beklenmeyen belirteci `(' Unix türü bir ortamda Cygwin ve Windows'taki komut satırı arabiriminde) yakınındaki hata iletisi sözdizimi hatası . Bu hata büyük olasılıkla düzenlenmiş bir kabuk komut dosyasını çalıştırmayı denediğinizde tetiklenir. eski DOS / Windows veya Mac sistemlerinde oluşturulmuş.

Beklenmeyen belirteç `('yakınında sözdizimi hatası

Bu hata mesajı ayrıca Linux komut satırına dosyaları elle kopyalamak gibi günlük işler için komutlar girerken de ortaya çıkar. Bu hata mesajının ortaya çıkmasının ana nedenleri ya yanlış sözdizimi ya da işletim sisteminin başka bir sistemin komutlarını yorumlamadaki sorunu olabilir. kabuk.

Beklenmeyen belirteç `('yakınında Sözdizimi Hatası neden olur?

Bu hata iletisinin nedenleri çok çeşitlidir ve komutları yürütürken yanlış giden binlerce sözdizimi olasılığı olduğundan bir makalede listelenemez. Bu hatanın temel nedenleri:

  • Her iki platformda herhangi bir komutu yürütürken hatalı sözdizimi . Ya komutu doğru kullanmıyorsunuz ya da yanlış sözdizimini girdiniz.
  • Kabuk Unix / DOS sistemleri arasında uyumlu değildir.
  • Bash shell betiğini başka bir kaynaktan çalıştıran sorunlar var.

Bu yazıda, kodlamanın temellerini bildiğinizi ve ne yaptığınız hakkında bir fikriniz olduğunu varsayıyoruz. Eğer bir acemi iseniz, çalıştırmaya çalıştığınız dil / komutun derinlemesine öğreticilerine uymanız en iyisidir. Muhtemelen bazı sözdizimlerinde hata yapmışsınızdır.

1. Çözüm: Sözdizimini ve komut biçimlerini denetleme

Bu hata iletisiyle karşılaşmanızın birinci ve en önemli nedeni, kodunuzdaki hatalı sözdizimindekilerdir veya komutların tam biçimini izlememenizdir. Her komut, belgelerinde görebileceğiniz önceden tanımlanmış bir biçime sahiptir. Bazı parametreler, diğerlerinin zorunlu olduğu isteğe bağlıdır.

Ayrıca, fazladan boşluk, çift ​​tırnak kullanımı ve zorunlu parametreler için daha fazla özen gösterilmelidir. Bunlardan herhangi biri eksikse veya yanlış ilan edilmişse, kodunuzu çalıştıramazsınız.

Örneğin, aşağıdaki kod yerine

 [mycom7] # ./ctopo.sh um_test1 [(1, 2), (2, 1)] 

Olarak çalıştırmanız gerekir

 [mycom7] # ./ctopo.sh um_test1 "[(1, 2), (2, 1)]" 

Ayrıca, komutları / kabuk komut dosyasını birkaç satırda yayılıyorsa doğru bir şekilde uyguladığınızdan emin olun.

Parametre tipi nedeniyle, çift tırnak gereklidir. Fazladan bir boşluk da kodunuzu mahvedebilir ve hata mesajını zorlayabilir. Yürütmekte olduğunuz komutun resmi belgelerini kontrol ettiğinizden ve orada bir sorun olup olmadığını kontrol ettiğinizden emin olun.

2. Çözüm: Kabuk betiğinizde sorun giderme

Kaynak sistemde çalışan ancak hedefte bir hata döndüren bir kabuk betiği kullanıyorsanız, yürütme sırasında depolanan değişkenleri kontrol ederek betiği giderebilir ve soruna neyin neden olduğunu görebilirsiniz. Bu, bazı durumlarda kabuğun yazdırılamayan bir karakteri yorumlamaya çalıştığından çok yaygın bir nedendir.

Kabuğu 'vx' parametresiyle çalıştırmayı deneyin. Bu bize hangi komutların çalıştırıldığını ve komut dosyasında hangi değerlerin saklandığını gösterecektir. Buradan neyin yanlış gittiğini tespit edebilir ve teşhis edebilirsiniz.

Örneğin, 'vx' i dahil ettikten sonra betiği terminalde yürütün:

 # sh -vx ./test_script5.sh 

Betik içeriğini 'cat' komutunu kullanarak şu şekilde kontrol edebilirsiniz:

 # cat test_script5.sh 

3. Çözüm: 'dos2unix.exe' komutunu kullanma

Windows / DOS metin dosyalarında, yeni bir satır, Satır İadesinin (\ r) ardından Satır Beslemesinin (\ n) birleşimidir. Mac'te (Mac OS X'ten önce), bir satır sonu basit bir Carriage Return (\ r) kullandı. Unix / Linux ve Mac OS X, Line Feed (\ n) satır sonlarını kullanır. Cygwin kullanıyorsanız, fazladan Satır Başı Dönüşü (\) karakteri nedeniyle DOS / Windows ve daha eski Mac tarafından yapılan komut dosyalarını işleyemez.

'Dos2unix.exe' komutunu kullanma

Burada, betiği doğru formata dönüştürecek 'dos2unix.exe' komutunu yapabilir ve ardından herhangi bir sorun olmadan çalıştırabilirsiniz.

Sonuç olarak, kullandığınız komutları ve platform türünü araştırmanız ve herhangi bir tutarsızlık olmadığından emin olmanız gerekir. Her ihtimalin üstesinden gelemediğimiz için ne tür hataların olabileceği ve nasıl düzeltileceği hakkında bir fikriniz olur.

Ilginç Haberler