image_pdfimage_print

Il carattere ^M è il simbolo di fine riga utilizzato dagli editor windows e mal interpretati da unix/linux.

Prendiamo questo file, scritto con il notepad:

$ cat appo.sh
#!/bin/bash
echo "ciao"

 

Questo dovrebbe stampare “ciao”, ma se eseguito va in errore:


$ ./appo.sh
./appo.sh: line 2: $'\r': command not found

 

Se aggiungiamo l’opzione -v al cat, vediamo che…

$ cat -v appo.sh
#!/bin/bash^M
^M
echo "ciao"^M 

 

Ops.. i ^M.. questi vengono interpretati come caratteri e non come “a capo”..

ripuliamo il file..

abbiamo un modo velocissimo per rimediare, dalla shell, sia usando un comando apposito sia utilizzando il perl, il risultato è lo stesso.

Dalla shell, digitate:

dos2unix appo.sh

Questo sovrascrive il file stesso convertendo i ^M (nelle versioni linux, nelle unix dovete redirigere su un nuovo file).

$ dos2unix appo.sh
dos2unix: converting file appo.sh to Unix format ...
$ cat -v appo.sh
#!/bin/bash
echo "ciao"

 

oppure, per utilizzare il perl, digitate:

$ perl -pi -e 's/\r//g' appo.sh
$ cat -v appo2.sh
#!/bin/bash
echo "ciao"

 

Adesso funziona..

$ ./appo.sh
ciao

No responses yet

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.