Repository 32bit  Forum
Repository 64bit  Wiki

[Android] Shell script su Android [RISOLTO]

Area di discussione libera.

Moderatore: Staff

Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

[Android] Shell script su Android [RISOLTO]

Messaggioda Burroughs » gio ago 15, 2013 8:26

Buon Ferragosto a tutti!

Vi sottopongo un problema apparentemente banale ma di cui non son riuscito a venire a capo finora.
Ho utilizzato per anni un tablet, il Samsung Galaxy Tab 10.1, rootato, con BusyBox Pro e ICS come versione di Android, che ha svolto con onore anche la funzione di file server, al fine di consentire, grazie a rsync, backup incrementali dai vari PC che ho a disposizione in casa.
Viste le scadenti prestazioni del tablet in oggetto, qualche settimana fa son passato al Samsung Galaxy Note 10.1: anche in questo caso ho rootato il dispositivo ed installato una rom, con l'unica differenza che questa ha Jelly Bean al posto di Ice Cream Sandwich.
Bene, alcuni script di quelli che ho impiegato con soddisfazione per anni sul precedente tablet, adesso non vanno più.
Ve ne porto a mo' di esempio uno:
Codice: Seleziona tutto
#!/system/bin/sh
# Script di cleaning di myskytv

PREFIX="/mnt/extSdCard/andy/freeguide/day-"
DATE=$(date "+${PREFIX}%Y-%m-%d")

# Mi assicuro che esista almeno un file con la data di oggi
FAKE_FILE=""
  if ! ls ${DATE}* >& /dev/null
  then
        # Non esiste, ne creo uno fasullo
        FAKE_FILE=$(mktemp ${DATE}.XXXXXX)
  fi

  for file in ${PREFIX}*
  do
        if [[ $file != ${DATE}* ]]
        then
       rm $file
        else
       break
        fi
    done

# Elimino l'eventuale file fasullo che ho creato
[[ $FAKE_FILE != "" ]] && rm -f $FAKE_FILE

L'errore che ottengo quando lo eseguo è il seguente:
Codice: Seleziona tutto
/system/bin/clean_freeguide: line 3: $' \r': command not found
/system/bin/clean_freeguide: line 6: $' \r': command not found
/system/bin/clean_freeguide: line 16: syntax error near unexpected token  `$' do\r''
/system/bin/clean_freeguide: line 16: `   do

Qualcuno di voi sa come procedere?
Grazie,

Burroughs.
Ultima modifica di Burroughs il ven ago 16, 2013 21:44, modificato 1 volta in totale.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)
Avatar utente
Burroughs
Linux 2.6
Linux 2.6
 
Messaggi: 968
Iscritto il: mer dic 15, 2004 0:00
Località: Lago Patria (NA)
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux

Re: [Android] Shell script su Android

Messaggioda percoco2000 » gio ago 15, 2013 9:33

probabilmente hai qualche carattere "nascosto" che inganna il parser della shell .... alla linea 3 ad esempio lui vede un \r (che suppongo sia un "vai a capo") . Mi ricorda tanto gli errori che si avevano passando un file testo da linux a windows o viceversa.
Avatar utente
percoco2000
Linux 2.6
Linux 2.6
 
Messaggi: 617
Iscritto il: mer lug 14, 2004 23:00
Località: Salerno
Slackware: 12.2
Kernel: 2.6.27
Desktop: mate - fluxbox
Distribuzione: mint 13 / slackware

Re: [Android] Shell script su Android

Messaggioda Burroughs » gio ago 15, 2013 9:40

percoco2000 ha scritto:probabilmente hai qualche carattere "nascosto" che inganna il parser della shell .... alla linea 3 ad esempio lui vede un \r (che suppongo sia un "vai a capo") . Mi ricorda tanto gli errori che si avevano passando un file testo da linux a windows o viceversa.

Sì, le righe 3 e 6 sono vuote, mentre l'errore un po' più in giù è relativo ad un do che il parser non riesce ad interpretare.
Come mi consigli di formattare e/o impostare il testo?

Burroughs.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)
Avatar utente
Burroughs
Linux 2.6
Linux 2.6
 
Messaggi: 968
Iscritto il: mer dic 15, 2004 0:00
Località: Lago Patria (NA)
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux

Re: [Android] Shell script su Android

Messaggioda percoco2000 » gio ago 15, 2013 20:15

mmm non saprei . Prova a cambiare editor...
Avatar utente
percoco2000
Linux 2.6
Linux 2.6
 
Messaggi: 617
Iscritto il: mer lug 14, 2004 23:00
Località: Salerno
Slackware: 12.2
Kernel: 2.6.27
Desktop: mate - fluxbox
Distribuzione: mint 13 / slackware

Re: [Android] Shell script su Android

Messaggioda targzeta » gio ago 15, 2013 22:20

Nel tuo script c'è qualche '\r\n' anziché il songolo '\n' usato da Unix.

Puoi provare con 'fromdos':
Codice: Seleziona tutto
fromdos < file > file_linux
a questo punto 'file_linux' dovrebbe andare bene.

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6195
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: [Android] Shell script su Android

Messaggioda Burroughs » ven ago 16, 2013 18:00

targzeta ha scritto:Nel tuo script c'è qualche '\r\n' anziché il songolo '\n' usato da Unix.

Puoi provare con 'fromdos':
Codice: Seleziona tutto
fromdos < file > file_linux
a questo punto 'file_linux' dovrebbe andare bene.

Emanuele

Grazie, Emanuele, ma il comando fromdos la shell non me lo riconosce; ho provato anche con l'implementazione della bash che ho appena tirato su, stessa cosa.
Diciamo che quando, con il mio script launcher, eseguo degli script molto semplici (una sola riga o giù di lì), non ci son problemi, ma appena gliene sottopongo qualcuno più complicato, mi dà errori di sintassi anche se sposto tutto su una sola riga, questo per evitare fraintendimenti dovuti all'andare a capo.
Quello che mi fa arrabbiare è che, con gli stessi software e gli stessi identici script, sul mio vecchio, fetentissimo tablet, con ICS invece che Jelly Bean, non c'era nessun tipo di problema...

Burroughs.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)
Avatar utente
Burroughs
Linux 2.6
Linux 2.6
 
Messaggi: 968
Iscritto il: mer dic 15, 2004 0:00
Località: Lago Patria (NA)
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux

Re: [Android] Shell script su Android

Messaggioda ZeroUno » ven ago 16, 2013 18:38

Codice: Seleziona tutto
cat file|sed 's/^M$//' >file_linux

in cui ^M non sono i caratteri ^ e M ma è un solo carattere che si ottiene tenendo premuto ctrl e premendo in sequenza 'v' e 'm'
prova anche
Codice: Seleziona tutto
cat file|sed 's/.$//' >file_linux

fa la stessa cosa di quello sopra, ma potrebbe fallire in molti casi.

Rinnovo anche io l'invito a cambiare editor.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4414
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: [Android] Shell script su Android

Messaggioda hashbang » ven ago 16, 2013 20:45

Anche tr dovrebbe andare bene per convertire un fine riga di Windows in uno di tipo Unix.

Codice: Seleziona tutto
$ tr -d '\15\32' < pippo.txt > pippo_unix.txt
Adoro il pragmatismo della lingua giapponese, è l'unica in cui per dire ad una ragazza che la ami le dici "suki". (cit.)
Avatar utente
hashbang
Packager
Packager
 
Messaggi: 1841
Iscritto il: ven giu 04, 2010 9:27
Località: Lecce
Nome Cognome: Luca De Pandis
Distribuzione: Windows 8.1 Pro

Re: [Android] Shell script su Android [RISOLTO]

Messaggioda Burroughs » ven ago 16, 2013 21:47

Ho risolto seguendo le indicazioni di hashbang.
Ragazzi, non so come ringraziarvi perché mi avete consentito di risolvere un problema che mi portavo appresso da una decina di giorni.
Immaginate che su xda-developers, che è il punto di riferimento per chi sviluppa rom alternative e quant'altro su Android, non mi hanno c...ato nemmeno di striscio.
Ancora una volta, onore alla splendida community di Slacky.eu!

Burroughs.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)
Avatar utente
Burroughs
Linux 2.6
Linux 2.6
 
Messaggi: 968
Iscritto il: mer dic 15, 2004 0:00
Località: Lago Patria (NA)
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux

Re: [Android] Shell script su Android

Messaggioda targzeta » ven ago 16, 2013 22:14

hashbang ha scritto:Anche tr dovrebbe andare bene per convertire un fine riga di Windows in uno di tipo Unix.

Codice: Seleziona tutto
$ tr -d '\15\32' < pippo.txt > pippo_unix.txt

Ma perché elimini anche il carattere '\32'? Dovrebbe bastare solo il carriage return (\15), no?

Comunque, dal man di tr, anche:
Codice: Seleziona tutto
tr -d '\r' < pippo.txt > pippo_unix.txt
dovrebbe andar bene.

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6195
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: [Android] Shell script su Android

Messaggioda hashbang » ven ago 16, 2013 22:39

targzeta ha scritto:Ma perché elimini anche il carattere '\32'? Dovrebbe bastare solo il carriage return (\15), no?
Sì Emanuele, in effetti hai ragione. Si può anche lasciare il solo \15.

A suo tempo, ebbi il suo stesso problema con uno script shell scritto al volo su Windows e trovai quella soluzione, ma, come hai detto tu, può essere utilizzato con il solo Carriage Return.
Adoro il pragmatismo della lingua giapponese, è l'unica in cui per dire ad una ragazza che la ami le dici "suki". (cit.)
Avatar utente
hashbang
Packager
Packager
 
Messaggi: 1841
Iscritto il: ven giu 04, 2010 9:27
Località: Lecce
Nome Cognome: Luca De Pandis
Distribuzione: Windows 8.1 Pro


Torna a Libera

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti