[+] bash wywala dziwne b

Potrzebujesz pomocy z C, C++, perl, python, itp.
harmichalh
Posty: 78
Rejestracja: 15 grudnia 2013, 02:09

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

Post 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ć.
Awatar użytkownika
Yampress
Administrator
Posty: 6416
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post 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
harmichalh
Posty: 78
Rejestracja: 15 grudnia 2013, 02:09

Post 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
Awatar użytkownika
Yampress
Administrator
Posty: 6416
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post 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...
harmichalh
Posty: 78
Rejestracja: 15 grudnia 2013, 02:09

Post 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
Awatar użytkownika
Yampress
Administrator
Posty: 6416
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post 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 ??
harmichalh
Posty: 78
Rejestracja: 15 grudnia 2013, 02:09

Post 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?
Awatar użytkownika
Yampress
Administrator
Posty: 6416
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post 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?
Awatar użytkownika
ArnVaker
Beginner
Posty: 277
Rejestracja: 10 października 2012, 21:58

Post autor: ArnVaker »

Strzelam, że na kodowaniu znaków się rozjeżdża.
harmichalh
Posty: 78
Rejestracja: 15 grudnia 2013, 02:09

Post 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)
ODPOWIEDZ