Strona 1 z 3

[+] bash wywala dziwne błędy, nawet na przykładach z internetu.

: 16 lutego 2014, 21:12
autor: harmichalh
Skopiowałem kod z tej strony: http://bash.0x1fff.com/petla-while

Kod: Zaznacz cały

#!/bin/bash
x=1;
while [ $x -le 10 ] ; do
 echo "Napis pojawił się po raz: $x"
 x=$[x + 1]
done
zapisałem do pliku i wklepałem:
bash web_print.bash
w odpowiedzi dostaję:
: Nie ma takiego pliku ani kataloguash
web_print.bash: line 2: $'\r': nie znaleziono polecenia
web_print.bash: line 6: bĹÄ
d skĹadni przy nieoczekiwanym znaczniku `done'
web_print.bash: line 6: `done'
Co jest nie tak?
System to najnowszy Debian (7.4) amd64.

P.s Jeśli tytuł wątku jest zły, to proszę o lepsze propozycję. Nie mam pomysłu jak mój problem opisać.

: 16 lutego 2014, 21:25
autor: Yampress
jeśli uruchamiasz program lokalnie = w tym katalogu co jesteś to musisz przed jego nazwą wstawić ./ tak jak poniżej
./web_print.bash
oczywiście na plik muszą być nałożone za pomocą chmod prawa +x do możliwości uruchamiania tego pliku...
no i przypadkiem nie nałożone noexec na partycje z której odpalasz program w pliku /etc/fstab

: 16 lutego 2014, 21:36
autor: harmichalh
Po wklepaniu:
./web_print.bash
Gdy jestem w katalogu z plikiem dostaję odpowiedź:
-bash: ./web_print.bash: /bin/bash^M: zĹy interpreter: Nie ma takiego pliku ani katalogu
Pliki edytuję nano przez ssh

: 16 lutego 2014, 21:39
autor: Yampress
[yampress@debian ~]$ chmod +x 1
[yampress@debian ~]$ ./1
Napis pojawił się po raz: 1
Napis pojawił się po raz: 2
Napis pojawił się po raz: 3
Napis pojawił się po raz: 4
Napis pojawił się po raz: 5
Napis pojawił się po raz: 6
Napis pojawił się po raz: 7
Napis pojawił się po raz: 8
Napis pojawił się po raz: 9
Napis pojawił się po raz: 10
[yampress@debian ~]$
[yampress@debian ~]$ cat 1
#!/bin/bash
x=1;
while [ $x -le 10 ] ; do
echo "Napis pojawił się po raz: $x"
x=$[x + 1]
done[yampress@debian ~]$

A na pewno ten plik się tak nazywa jak piszesz ? Wydaj polecenie ls w tym katalogu

A bash masz zainstalowany ?
[yampress@debian ~]$ dpkg -l |grep bash
ii bash 4.2+dfsg-1 amd64 GNU Bourne Again SHell
[yampress@debian ~]$

I zauważ że tam jest średnik ; a nie dwukropek : gdzieniegdzie...

: 16 lutego 2014, 21:45
autor: harmichalh
Wynika dla dpkg -l |grep bash:
ii bash 4.2+dfsg-0.1 amd64 GNU Bourne Again SHell
ii bash-completion 1:2.0-1 all programmable completion for the bash shell
Zawartość pliku z nano:
#!/bin/bashx=1;
while [ $x -le 10 ] ; do
echo "Napis pojawia sie po raz: $x"
x=$[x + 1]
done

Wynik dla ls:
[/i]sensors.txt web_print2.bash web_print.bash


Uprawnienia pliku: -rwxrwxrwx

: 16 lutego 2014, 21:52
autor: Yampress
Czyli wszystko powinno być ok. bash zainstalowany, uprawnienia są, plik tak jak ma się nazywać tak się nazywa, jedynie jakaś literówka w samym pliku...


EDIT
#!/bin/bashx=1;
while [ $x -le 10 ] ; do
echo "Napis pojawia sie po raz: $x"
x=$[x + 1]
done
a teraz
#!/bin/bash
x=1;

while [ $x -le 10 ] ; do
echo "Napis pojawia sie po raz: $x"
x=$[x + 1]
done
Gdzie błąd ??

: 16 lutego 2014, 22:10
autor: harmichalh
Yampress, Sprawdziłem oba skrypty, ale nadal ten sam błąd. Pliki edytuje w nano przez ssh pod Windows, ale na Debianie 7.2 też tak robiłem i nie było problemów...
Co robię źle?

Yampress, masz Debiana 7.4?

: 16 lutego 2014, 22:21
autor: Yampress
Jessie. Kurde no nie wiem. Może jakiś błąd składni. Chyba muszą wypowiedzieć się mądrzejsi ode mnie.
bĹÄd skĹadni przy nieoczekiwanym znaczniku `done'
Tu jest ból. A czym łączysz się spod windowsa? Putty?

: 16 lutego 2014, 22:27
autor: ArnVaker
Strzelam, że na kodowaniu znaków się rozjeżdża.

: 16 lutego 2014, 22:28
autor: harmichalh
Tak, Putty. Zmieniłem właśnie kodowanie na UTF-8, napisałem plik od nowa w vim-ie, ale błąd ten sam (teraz z pl znakami):
-bash: ./web_print.bash: /bin/bash^M: zły interpreter: Nie ma takiego pliku ani katalogu
Po napisaniu pliku w nano jest to samo.

Może ktoś napisać to u siebie i wrzucić plik? Jeśli zadziała u kogoś i umie to problem z kodowanie, etc. a jeśli zadziała u kogoś, a u mnie nie to problem z czymś innym.

Dla kodu z pliku web_print3.bash:
#!/bin/bash
echo "test"
Też wywala błąd:
-bash: ./web_print3.bash: /bin/bash^M: zły interpreter: Nie ma takiego pliku ani katalogu
Po zmianie #!/bin/bash na #!/bin/sh też jest ten prawie identyczny błąd (tylko sh zamiast bash)