Buyruq, dəyişən Başı təyin etməkdə bir səhv aşkar etməyib

Test.sh adlı bu script var:

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

sh test.sh çalıştırdığımda aşağıdakıları edəcəyəm:

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

Yanlış etdiyim nədir? Mən onlayn skriptlərdə əsas / yeni başlama təlimlərinə baxıram və dəyişənləri bəyan etmək üçün deyirlər ... Yəni səhv etdiyimə əmin deyiləm.

Ubuntu 9.10 serverdeyim. Bəli, bash /bin/bash .

433
15 февр. Jake Wilson tərəfindən 15 Fevralda təyin olundu 2010-02-15 21:32 '10 at 21:32 2010-02-15 21:32
@ 5 cavab

"=" İşarəsi ətrafında boşluqlar ola bilməz.

Yazarkən:

 STR = "foo" 

bash, STR adlı iki əmri (string '=' və 'foo') ilə əmr etməyə çalışır.

Yazarkən:

border=0
 STR =foo 

bash STR adlı 1 əmri ilə bir komanda çalıştırmağa çalışır (string '= foo')

Yazarkən:

border=0
 STR= foo 

bash, foo əmrini STR ilə mühitdə boş bir dize təyin etməyə çalışır.

Bu dəqiqliyə kömək edirmi və ya sadəcə obfuscation edirəm, amma əmin deyiləm:

  • İlk əmr tam bərabərdir: STR "=" "foo" ,
  • ikinci STR "=foo" ilə eynidır,
  • sonuncu STR="" foo bərabərdir.

Müvafiq ş naviqasiya bölməsi 2.9.1 aşağıdakı kimi oxuyur:

"Sadə komanda" isteğe bağlı dəyişən tapşırıqların və istənilən ardıcıllıqdakı redirectionların bir ardıcıllığıdır, isteğe bağlı olaraq nəzarət operatoru tərəfindən tamamlanan sözlər və redirections.

Bu kontekstdə, bir word , bash'in çalışacağı bir əmrdir. Redaktə edilməyən = (xəttin başlanğıcından başqa hər hansı bir mövqedə) olan hər hansı bir xəta bir dəyişənə təyin edir və bir istiqamətdə olmayan və hər hansı bir xətt içerməyən = bir əmrdir. STR = "foo" STR də dəyişkən tapşırıq deyil.

805
15 февр. Cavab 15 fevralda William Pursell tərəfindən verilir. 2010-02-15 21:34 '10 at 21:34 2010-02-15 21:34

= İmza ətrafında boşluqlar buraxın:

border=0
 #!/bin/bash STR="Hello World" echo $STR 
146
15 февр. Joey 15 fevralda cavab verdi 2010-02-15 21:34 '10 at 21:34 2010-02-15 21:34

İnteraktiv rejimdə hər şey yaxşı görünür

 $ str="Hello World" $ echo $str Hello World 

Aydındır! Yohannesin dediyi kimi '=' ətrafında yer yoxdur. '=' Ətrafında hər hansı bir yer varsa, interaktiv rejimdə `` kimi səhvlər verir

Heç bir komanda 'str' tapılmadı

5
26 февр. cavab 26 fevralda Arkapravo tərəfindən verilir . 2010-02-26 09:33 '10 at 9:33 2010-02-26 09:33

Mənə eyni problem var, amma bu bir sintaksis səhvi deyil. Burada sadə bir skriptdir:

 #!/bin/bash ssh -T user@server <<-EOSSH VAR1=test cd $VAR1 EOSSH 

bu ilk iki müqavilə olduğuna inanan aşağıdakı səhvləri yazır:

 Warning: no access to tty (Bad file number). Thus no job control in this shell. VAR1=test: Command not found. 
0
01 февр. mokorana tərəfindən verilmiş cavab 01 fevral. 2019-02-01 14:05 '19 saat 02:05 'da 2019-02-01 14:05

Hər hansı bir dəyişəni təyin etdikdə, əlavə boşluqlar əlavə etməliyik.

məsələn.

 name = "Stack Overflow" // it is not valid, you will get an error saying- "Command not found" 

Boşluqları çıxarın:

 name="Stack Overflow" 

və yaxşı işləyəcək.

0
19 июня '17 в 18:16 2017-06-19 18:16 Cavab Ravi Solanki tərəfindən 19 iyun '17 'də 18:16 2017-06-19 18:16' də verilir