Il file .sh puoi eseguirlo mediante codice
SHELL "nome dello script"
dopo avergli dato i permessi di esecuzione. La frase puoi toglierla anche se non so che fastidio da!
emh...se faccio cosi
COPY "file.zip" TO "/home/*/file.zip"
mi risponde "files or directory don't exist"
ho risolto cosi
COPY "file.zip" TO User.Home & "/file.zip"
SHELL "unzip file.zip"
SHELL "rm -f file.zip"
volevo sapere se posso far fare quelle righe una sola volta,altrimenti ogni volta che si apre il programma esegue quelle righe...
per evitare che te lo faccia ad ogni avvio ti conviene scrivere una procedura di controllo se il file esiste già, qualcosa del genere
IF not exist user.home & "/file.zip" then
COPY "file.zip" TO User.Home & "/file.zip"
SHELL "unzip file.zip"
ENDIF
in questo modo se non esiste il file copia e scompatta il tutto
secondo me è preferibile mettere tutti i file all' interno di una cartella magari nascosta per evitare di "sporcare" troppo la home del tipo:
IF not exist user.home & "/.cartellaprogramma/file.zip" then
COPY "file.zip" TO User.Home & "/.cartellaprogramma/file.zip"
SHELL "unzip .cartellaprogramma/file.zip"
ENDIF
io avevo fatto cosi:
IF CheckBox1.Value = TRUE SHELL "echo opzione_1>> file.cfg" END IF
IF CheckBox2.Value = TRUE SHELL "echo opzione_2>> file.cfg" END IF
IF CheckBox3.Value = TRUE SHELL "echo opzione_3>> file.cfg" END IF
IF CheckBox4.Value = TRUE SHELL "echo opzione_4>> file.cfg" END IF
IF CheckBox5.Value = TRUE SHELL "echo opzione_5>> file.cfg" END IF
IF CheckBox6.Value = TRUE SHELL "echo opzione_6>> file.cfg" END IF
IF CheckBox7.Value = TRUE SHELL "echo opzione_6>> file.cfg" END IF
in gambas come in altri linguaggi ci sono molti modi di fare le stesse cose
l' importante è usarne uno che ti piaccia e ti soddisfi appieno
personalmente non mi piace usare troppo la schell ..sarebbe come ammettere che quell' operazione non riesco a farla con quello che offre il linguaggio gambas.
Non so esattamente quello che devi fare ma se il file di configurazione che devi modificare è relativo al tuo programma gambas, quindi lo puoi realizzare a tuo piacimento è molto + elegante utilizzare il componente gb.settings creato appositamente per gestire i file di configurazione della propria applicazione
esempio
devo salvare le opzioni scelte in file?:
PUBLIC SUB Button1_Click()
'salvataggio opzioni
Settings["opzioni/1"] = CheckBox1.Value
Settings["opzioni/2"] = CheckBox2.Value
Settings["opzioni/3"] = CheckBox3.Value
Settings["opzioni/4"] = CheckBox4.Value
Settings["opzioni/5"] = CheckBox5.Value
Settings["opzioni/6"] = CheckBox6.Value
Settings["opzioni/7"] = CheckBox7.Value
Settings.Save
END
devo caricare le opzioni?:
PUBLIC SUB Button2_Click()
'caricamento opzioni
CheckBox1.value = Settings["opzioni/1", -1]
CheckBox2.value = Settings["opzioni/2", -1]
CheckBox3.value = Settings["opzioni/3", -1]
CheckBox4.value = Settings["opzioni/4", -1]
CheckBox5.value = Settings["opzioni/5", -1]
CheckBox6.value = Settings["opzioni/6", -1]
CheckBox7.value = Settings["opzioni/7", -1]
END
il file di configurazione viene salvato in
home/tuonome/.config/gambas/nometuaapplicazione.conf
ricordati di abilitare il componente gb.settings prima di uasare questo codice
In effetti, leggendo questa discussione, non è ben chiaro il concetto...
Se ho capito qualcosa, forse il nostro amico vuole aggiungere una riga di testo ad un file esistente (o altrimenti crearlo e poi aggiungere).
Questo lo si può fare in svariati modi:
a) usare i metodi statici della classe File di Gambas;
b) usare i comandi OPEN, READ, WRITE, CLOSE, sempre di Gambas;
c) usare una SHELL, inviando idonei comandi.
Come ha detto fsurfing, solo se nessuna delle funzionalità di Gambas ha la possibilità di fare una determinata operazione, allora si ricorre ad una chiamata al sistema operativo (vedi SHELL o EXEC).
Se invece vuoi aggiungere file (come ho visto da alcuni esempi in questa discussione) ad un file compresso (es. uno zip), allora la questione è più complessa, ovvero: decomprimere l'eventuale file esistente in una directory temporanea; aggiungere il nuovo file a questa directory, comprimere il tutto nuovamente.
Anche in questo caso si hanno due alternative:
a) usare la classe Compress di Gambas;
b) usare il comando SHELL per eseguire l'apposito programma di compressione.
Nel primo caso, la classe Compress non è compatibile con tutti i formati di compressione; nel secondo caso, è necessario essere sicuri che il programma desiderato esista, e sapere anche che parametri usare per l'operazione.
Sempre nel secondo, occorre conoscere un poco di shell scripting (di norma si usa bash), altrimenti le cose diventano molto complicate.
L'esecuzione di una serie di comandi in bash, può essere fatta, dichiarando sulla stessa riga tutta la sequenza dei comandi da eseguire, separati da un punto e virgola (;). Se non si verificano errori, i comandi vengono eseguiti tutti in sequenza, altrimenti l'esecuzione si blocca sul comando che ha provocato l'errore.
Un esempio:
SHELL "cd /tmp; ls -la; cd $HOME"
vengono esesuiti tre comandi: spostamento nella directory /tmp di sistema, lista dei file presenti nella directory, ritorno alla directory utente.
L'ultimo comando determina il valore di ritorno (o codice di errore) dell'intera operazione, gli altri vengono persi.