volevo eseguire un semplice script da una comoda interfaccia grafica... tale script dovrebbe eseguire la conversione dei file presenti in una directory (in formato .csv) in un'altro formato (compatibile per i navigatori tomtom .ov2) sfruttando il programma gpsbabel (richiesto per il funzionamento).
se eseguo lo script dopo averlo reso eseguibile esso funziona perfettamente ma se provo ad avviarlo da gambas mi dà il seguente messaggio: "ls: impossibile accedere a *.csv: Nessun file o directory"
le righe di codice che sto provando ad usare sono le seguenti:
PUBLIC SUB Button1_Click()
IF NOT Exist(DirView1.Current & "/csv2ov2") THEN
COPY user.home & "/.poiconvert/csv2ov2" TO DirView1.Current & "/csv2ov2"
'copio il file nella cartella di destinazione come richiesto dallo script
WAIT
ENDIF
SHELL "cd " & DirView1.Current 'sposto la shell nella cartella richiesta dallo script
SHELL "chmod +x " & DirView1.Current & "/csv2ov2" 'rendo eseguibile lo script
'SHELL "dir " & DirView1.Current 'prova per vedere se la shell punta a quella directory
SHELL DirView1.Current & "/csv2ov2" ' eseguo lo script
'WAIT
FileView1.Refresh 'aggiorno le liste dei file
FileView2.Refresh
'codice dove elimino il file creato per la conversione
END
e questo è il contenuto dello script incriminato:
#!/bin/bash
## csv2ov2
## traduzione files punti di interesse da formato csv a formato ov2 per tomtom
## i files da tradurre devono essere nella cartella di questo script
## i files ov2 saranno creati nella medesima cartella
## bop
echo > temp1
echo >> temp1
echo >> temp1
echo >> temp1 # creo un file con 4 righe vuote
for file in `ls *.csv ` ; do # per ogni elemento della directory corrente ...
a=${#file} # lunghezza nome file
let 'b = a - 4' # calcola lunghezza nome file senza estensione
noext=${file:0:b} # estrae nome file senza estensione
echo sto processando $noext
cat temp1 $file > temp2 # aggiunge le 4 righe in testa al file (necessario a gpsbabel)
gpsbabel -i tomtom_asc -f temp2 -o tomtom -F $noext.ov2 # trasforma in formato per tomtom
done
rm -f temp1 temp2 # elimina files temporanei
## eop
dove sbaglio????
grazie di cuore a tutti...
dopo vari tentativi ho scoperto che il problema risiede nei percorsi passati (sicuramente dovuto dalla scarsa conoscenza di linux da parte mia)... se eseguo tutto nella home utente infatti tutto funziona perfettamente:
PUBLIC SUB Button1_Click()
IF NOT Exist(user.Home & "/csv2ov2") THEN
COPY user.home & "/.poiconvert/csv2ov2" TO User.Home & "/csv2ov2"
'copio il file script nella cartella home
WAIT
ENDIF
COPY DirView1.Current & "/" & FileView1.Current TO user.Home & "/" & FileView1.Current 'copio anche il file interessato nella home come richiesto dallo script
WAIT
SHELL "chmod +x csv2ov2" 'rendo lo script eseguibile
WAIT
SHELL "./csv2ov2" 'lancio lo script
WAIT
SHELL "rm -f csv2ov2 " & FileView1.Current 'elimino i file usati per la conversione
WAIT
FileView2.Reload
Message.Info("Conversione Effettuata")
END
oppure exec
non execute :)
...solo aggiungo semplicemente che Exec vuole le parentesi quadre:
Exec ["umount -t smbs /mnt/pippo"]
si il problema è quello :)
lancia il comando con
shell "gksudo umount -t smbs /mnt/pippo"
naturalmente funziona correttamente solo se usi ubuntu :(