Bir değişkene değer atarken “STR: Komut bulunamadı”


9

Aşağıdaki satırları “test.sh” adlı bir kabuk komut dosyasına girdim:

#!/bin/bash
echo Hello World
STR=”Hello Again
echo $STR

Chmod çalıştırılabilir sonra, ben komut dosyası ile koştu ./test.sh. Ancak mesajı alıyorum

./test.sh: line 3  STR: Command not found

Neyi yanlış yapıyorum?


1
Terdon'un cevabı sorunuzu çözdü mü? Değilse, yanlışlıkla değişken atamanızın etrafında boşluklar olabilir.
Arronical

@Voker benim önerime dayalı sadece stilistik bir yorum : Kod bloğu yerine hata mesajları için Blockquote kullanmak en iyisidir; Sonunda, bu kod değil, Bash yorumlayıcısının geri döndüğü bazı metinler.
fedorqui

@fedorqui neden? Alıntı blokları biçimlendirme korumak yok, özel karakterler yorumlamak (örneğin *, _, #) markdown olarak ve ekran okuyucu yazılım tarafından farklı şekilde oluşturulur. Bir bilgisayar tarafından verilen veya alınan herhangi bir şey kod blokları içinde olması gerektiğini düşünüyorum. Tam biçimin ne zaman alakalı olabileceğini asla bilemezsiniz. Özellikle unicode'un devreye girdiği bu tür şeylerle uğraşırken.
terdon

@terdon gerçekten vakalara bağlıdır ve hatta kelime kaydırmaya izin veren ve satırsonlarını koruyan günlükler / uyarılar / hata mesajları için biçim ekleme isteği bile vardır . Bana göre, bu durumda böyle bir çizgi ise, kodun ne olduğunu ve hataların ne olduğunu anlamayı kolaylaştırdığı için alıntı bloklarını tercih ederim.
fedorqui

@fedorqui Ben bunu meta almalıyız ama bir bilgisayar tarafından okunan veya üretilen bir mesaj gönderirken her zaman sabit genişlikli yazı tipi ve tam format çoğaltmayı tercih ederim.
terdon

Yanıtlar:


20

Bu betiği oluşturmak için ne kullanıyorsunuz? Sorunuzda yer alan tırnak işareti karakterleri yanlış. Bunlar normal çift tırnak ( ") değil . Düzenli alıntılar:

$ uniprops '"' | head -1
U+0022 "› \N{QUOTATION MARK}

Sizinkiler:

$ uniprops '”' | head -1
U+201D ‹”› \N{RIGHT DOUBLE QUOTATION MARK}

Yani, normal tırnak kullanın ve iyi olacaksınız:

#!/bin/bash
echo Hello World
STR="Hello Again"
echo "$STR" ## Get into the habit of ALWAYS quoting your variables as well

Cevabınız için teşekkürler Terdon. Dosyadaki çift tırnak işaretleri doğrudur, Gönderi bir e-postadan alınmıştır.
Jay Silver

1
unipropshavalı görünüyor. Sayfayı buldum (bu kendi tchrist'imiz mi?). Kaynaktan indirmem gerekiyor mu yoksa bir yerde bir paket yöneticisinde kullanılabilir mi? E: Unable to locate package uniprops
TRiG

1
Perl'i çok fazla kullanmıyorum (neredeyse hiç). Sadece daha fazla bilmek istiyorum asgari Unicode hakkında.
TRiG

1
@TRiG iyi, Ubuntu'da, bu kadar basit sudo apt-get install cpanminus; sudo cpanm Unicode::Tussleve sonra unipropskomuta sahipsin . Tabii ki, tchrist lanet şeyi yazdı, bu yüzden ona sohbette de sorabilirsin :)
terdon

1
Ne yazık ki her zaman bu saçmalıklarla karşılaşıyorum. İşverenimdeki belirli bir wiki sistemi, kısa çizgi eksi -U + 002D'yi kısa çizgi U + 2010'a ( veya benzeri ) çevirme alışkanlığına sahip görünüyor . Sonra uname ‐açalışmayı bırakmak gibi şeyler : -. E-posta istemcileri genellikle benzer HTML alışkanlıklarına sahiptir - özellikle HTML biçimlendirmesini kullanırken - düz metin e-postaları tercih etmenin başka bir iyi nedeni.
Dijital Travma
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.