Düzeltme: Beklenmeyen belirteç yakınında Sözdizimi Hatası '' (& lsquo;

Beklenmeyen belirtecin yanında hata mesajı sözdizimi hatası "(' Unix tipi bir ortamda, Cygwin'de ve Windows'ta komut satırı arayüzünde meydana gelir. Bu hata büyük olasılıkla, düzenlenen veya düzenlenmiş bir kabuk komut dosyasını çalıştırmaya çalıştığınızda tetiklenecektir. eski DOS / Windows veya Mac sistemlerinde oluşturulmuştur.

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

Bu hata mesajı, dosyaları manuel olarak kopyalamak gibi günlük görevler için Linux komut satırına komutlar girerken de ortaya çıkar. Bu hata mesajının oluşmasının ana nedenleri, kötü sözdizimi veya işletim sisteminin başka bir sistemin komutlarını yorumlamadaki problemidir. kabuk.

Beklenmeyen belirteç ('?) Yakınındaki Sözdizimi Hatasına neden olan nedir?

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

  • Her iki platformda da herhangi bir komut yürütülürken hatalı sözdizimi . Ya komutu doğru kullanmıyorsunuz ya da yanlış sözdizimi girdiniz.
  • Kabuk, Unix / DOS sistemleri arasında uyumlu değildir .
  • Bash kabuğu komut dosyasını başka bir kaynaktan çalıştırırken sorunlar var .

Bu makalede, kodlamanın temellerini bildiğinizi ve ne yaptığınız hakkında bir fikriniz olduğunu varsayıyoruz. Yeni başlayan biriyseniz, yürütmeye çalıştığınız dilin / komutun ayrıntılı eğitimlerini takip etmeniz en iyisidir. Muhtemelen bir söz dizimi hatası yapmışsınızdır.

1.Çözüm: Komutların Sözdizimini ve Biçimini Kontrol Etme

Bu hata mesajıyla karşılaşmanızın ilk ve en önemli nedeni, kodunuzdaki kötü sözdizimi veya komutların tam biçimini izlememenizdir. Her komutun belgelerinde görebileceğiniz önceden tanımlanmış bir biçimi vardır. Diğerleri zorunlu olan birkaç parametre isteğe bağlıdır.

Ayrıca, ekstra alan , çift ​​tırnak kullanımı ve gerekli zorunlu parametreler için ekstra özen gösterilmelidir . Bunlardan herhangi biri eksikse veya yanlış beyan 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 yürütmeniz gerekiyor

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

Ayrıca, birkaç satıra yayılıyorsa komutlarınızı / kabuk betiğinizi doğru şekilde çalıştırdığınızdan emin olun.

Parametre türü nedeniyle, çift tırnaklar gereklidir. Fazladan bir boşluk da kodunuzu bozabilir ve hata mesajını zorlayabilir. Çalıştırdığınız 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 veren bir kabuk komut dosyası kullanıyorsanız, yürütme sırasında depolanan değişkenleri kontrol ederek komut dosyasını giderebilir ve ardından soruna neyin neden olduğunu görebilirsiniz. Kabuk birçok durumda yazdırılamayan bir karakteri yorumlamaya çalıştığı için bu çok yaygın bir nedendir.

Kabuğu 'vx' parametresiyle çalıştırmayı deneyin. Bu bize hangi komutların çalıştırıldığını ve kodda hangi değerlerin saklandığını gösterecektir. Burada, neyin yanlış gittiğini giderebilir ve teşhis edebilirsiniz.

Örneğin, şu şekilde 'vx'i ekledikten sonra terminalde komut dosyasını çalıştırın:

# sh -vx ./test_script5.sh

Komut dosyasının içeriğini 'cat' komutunu kullanarak kontrol edebilirsiniz:

# cat test_script5.sh

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

Windows / DOS metin dosyalarında yeni bir satır, Carriage Return (\ r) ve ardından Line Feed (\ n) kombinasyonudur. Mac'te (Mac OS X'ten önce), satır sonu basit bir Satır Başı (\ r) kullanıyordu. Unix / Linux ve Mac OS X, Satır Besleme (\ n) satır sonlarını kullanır. Cygwin kullanıyorsanız, fazladan Satır Başı (\ r) 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 biçime dönüştürecek 'dos2unix.exe' komutunu yapabilir ve ardından herhangi bir sorun yaşamadan çalıştırabilirsiniz.

Sonuç olarak, komutlarınızı ve kullandığınız platform türünü araştırmanız ve herhangi bir tutarsızlık olmadığından emin olmanız gerekir. Her olasılığı ele alamayacağımız için, ne tür hataların ortaya çıkabileceği ve bunları nasıl düzelteceğiniz konusunda bir fikriniz olur.