[Çözüldü] Bash (Shell Script) Komutları Neden Doğru Çalışmıyor?

Başlatan Kanguru, 18 Haziran 2015 - 12:09:27

« önceki - sonraki »

0 Üyeler ve 3 Ziyaretçi konuyu incelemekte.

Kanguru

Selam olsun arkadaşlar.

Ben www.tutorialspoint.com/unix/ adresinden unix programlama öğrenmek için çalışıyorum fakat kodların neredeyse tamamı çalışmıyor. Mesela http://www.tutorialspoint.com/unix/unix-using-arrays.htm sayfasındaki şu örnek denildiği gibi çalışmıyor.


#!/bin/sh

NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Index: ${NAME[0]}"
echo "Second Index: ${NAME[1]}"

Hata iletisi:

bash.sh: 3: bash.sh: NAME[0]=Zara: not found
bash.sh: 4: bash.sh: NAME[1]=Qadir: not found
bash.sh: 5: bash.sh: NAME[2]=Mahnaz: not found
bash.sh: 6: bash.sh: NAME[3]=Ayan: not found
bash.sh: 7: bash.sh: NAME[4]=Daisy: not found
bash.sh: 8: bash.sh: Bad substitution


Bir tek bu site de değil. Başka sitelerdeki kodlar da benzeri hatalar veriyor.
Mesela tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html bu sitenin while örneği:
#!/bin/bash
         COUNTER=0
         while [  $COUNTER -lt 10 ]; do
             echo The counter is $COUNTER
             let COUNTER=COUNTER+1
         done

Hata İletisi (Sonsuz döngü oluyor):
.
.
.
bash.sh: 5: bash.sh: let: not found
The counter is 0
bash.sh: 5: bash.sh: let: not found
The counter is 0
bash.sh: 5: bash.sh: let: not found
The counter is 0
bash.sh: 5: bash.sh: let: not found
The counter is 0
bash.sh: 5: bash.sh: let: not found
The counter is 0
.
.
.


Sorun nedir? Teşekkürler!

heartsmagic

Ubuntu kabuk için dash'e yönleniyor o da senin yürütmeye çalıştığın bazı özellikleri desteklemiyor. shabang ekleme de yetmiyor bu iş için. Kaldı ki ilkinde sen /bin/sh kullanmışsın, o da desteklemiyor. İki şekilde çalıştırabilirsin istediğin betikleri:

bash falanca

veya

chmod +x falanca
./falanca
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Kanguru

Teşekkürler. Şimdi dediğin gibi yapınca çalıştı.

Peki sh ve bash arasındaki fark nedir? Ben fark olduğunu bilmiyordum, şimdi öğrendim.

heartsmagic

sh dediğimiz Bourne Shell, Unix zamanından gelen. Esasında bir POSIX standardına uyan komut yorumlayıcısı, dili kendisi. bash ise Bourne Again Shell tam isimli, GNU için yazılan kabuk. Bourne Shell'e benziyor haliyle, ancak elbette farkları mevcut. Daha yeni olduğu için çok daha fazla özelliğe sahip, esnek, modern. sh, örneğin komut satırı düzenleme, komut geçmişi, şu an kullandığın diziler gibi birçok şeyi desteklemiyor. Daha fazlası için Google  yardımcı olacaktır :)

Konu çözüldüyse: cozuldukonusu
Başka soruların varsa konuşabiliriz tabi.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.