[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.
Rispondi
Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

[Android] Shell script su Android [RISOLTO]

Messaggio da Burroughs »

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 16 ago 2013, 22: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
percoco2000
Linux 3.x
Linux 3.x
Messaggi: 632
Iscritto il: gio 15 lug 2004, 0:00
Slackware: 12.2
Kernel: 2.6.27
Desktop: mate - fluxbox
Distribuzione: mint 13 / slackware
Località: Salerno

Re: [Android] Shell script su Android

Messaggio da percoco2000 »

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
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

Re: [Android] Shell script su Android

Messaggio da Burroughs »

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
percoco2000
Linux 3.x
Linux 3.x
Messaggi: 632
Iscritto il: gio 15 lug 2004, 0:00
Slackware: 12.2
Kernel: 2.6.27
Desktop: mate - fluxbox
Distribuzione: mint 13 / slackware
Località: Salerno

Re: [Android] Shell script su Android

Messaggio da percoco2000 »

mmm non saprei . Prova a cambiare editor...

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6631
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: [Android] Shell script su Android

Messaggio da targzeta »

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
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

Re: [Android] Shell script su Android

Messaggio da Burroughs »

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
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: [Android] Shell script su Android

Messaggio da ZeroUno »

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

hashbang
Packager
Packager
Messaggi: 2021
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS/OpenBSD
Località: Lecce/Bergamo

Re: [Android] Shell script su Android

Messaggio da hashbang »

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

Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

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

Messaggio da Burroughs »

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
targzeta
Iper Master
Iper Master
Messaggi: 6631
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: [Android] Shell script su Android

Messaggio da targzeta »

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
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

hashbang
Packager
Packager
Messaggi: 2021
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS/OpenBSD
Località: Lecce/Bergamo

Re: [Android] Shell script su Android

Messaggio da hashbang »

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.

Rispondi