SORU
15 ŞUBAT 2010, PAZARTESİ


Komut değişken bildirimi - komut bulunamadı Bash değil

Bunu sormaya utanıyorum böyle basit bir soru gibi görünüyor:

test.sh

#!/bin/bash
STR = "Hello World"
echo $STR

çalıştırdığımdash test.sh.

test.sh: line 2: STR: command not found

Neyi yanlış yapıyorum? Son derece temel/yeni başlayanlar at komut öğreticiler ve bu değişkenleri bildirmek için ne derler... neyi yanlış yapıyorum emin değilim o Yüzden online çarparım bak.

Ubuntu Server 9.10 kullanıyorum. Ve evet, bash /bin/bash yer almaktadır.

CEVAP
15 ŞUBAT 2010, PAZARTESİ


Eğer boşluk var '=' işareti.

Yazarken:

STR = "foo"

bash bir komut 2 argümanlarla STR adlı çalıştırmayı dener ('=' ve '') foo . dizeleri

Yazarken:

STR =foo

bir bash komut 1 değişkeni ile STR adlı çalıştırmayı dener (string '=foo')

Yazarken:

STR= foo

bash STREET çevresinde boş bir dizeye ayarlanmış komut foo çalıştırmayı dener.

Eğer bu açıklığa kavuşturmak için yardımcı olur, ya da eğer sadece şaşırtmaca olup olmadığından emin değilim, ama unutmayın:

  1. ilk komut için tam olarak eşdeğerdir: STR "=" "foo",
  2. ikinci STR "=foo", aynıdır
  3. ve son STR="" foo eşdeğerdir.

Sh dili spec ilgili bölüm, bölüm 2.9.1 Birleşik Devletleri:

"Basit bir komut" isteğe bağlı değişken atamaları ve yönlendirmeler dizisidir, herhangi bir düzende, isteğe bağlı olarak kelime ve yönlendirmeler, kontrol operatörü tarafından sonlandırıldı izledi.

Bu bağlamda, word bir bash çalıştırmak için komut. Herhangi bir dize içeren = (herhangi bir pozisyon dışında başında dize) bir yeniden yönlendirme, bir değişken atama, herhangi bir dize değil, bir yönlendirme ve içermez = bir komut. STR = "foo", STR değişken bir atama değil.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • KittiesMama

    KittiesMama

    10 AĞUSTOS 2008
  • MrOctopi

    MrOctopi

    6 Aralık 2010
  • sebsebdouze

    sebsebdouze

    7 ŞUBAT 2008