Bash script ….. evoluzione :D

Succede anche questo … cioè posti la tua soluzione su un forum … di montagna!!! … ti fanno notare che esiste un qualche cosa .. scarichi .. leggi .. studi .. implementi ..

Un passo indietro: subito dopo aver implementato lo script per la “Prima nota” ho postato la soluzione su vari forum. Un po’ per donare alla comunità il lavoro … un po’ per “farmi vedere”. Proprio su uno di questi forum mi hanno fatto notare che attraverso BUC (http://buc.opensource.tk/) è possibile dare una gui ad un bash script. Poche righe in xml e il gioco è fatto.

Ecco il file .mc:

<?xml version="1.0"?>

<config>

<tab>

<title>echo "Genera Prima Nota 1.0"</title>

</tab>

<label>

echo "Seleziona il percorso"

</label>

<file var="percorso" mode="dir" filter="">

</file>

<label>

echo "Seleziona il tipo di file"

</label>

<combobox var="formato">

echo "xls"

echo "ods"

</combobox>

<label>

echo "Clicca su AVVIA per effettuare la conversione"

</label>

<button title="AVVIA">

direct=echo $PWD

sh primanota.sh $percorso $formato

</button>

</config>

e quello .sh che richiamo:

#!/bin/sh
# Script Bash by F3d7
#
# Prima nota: lo scipt converte i file ODS e/o XLS in CSV
# estrae da questi il numero fattura, la data, il nome e l'importo
# li assembla in un nuovo file CSV pronto per CALC
#
# Release 1.0 with BUC
# del 4/7/2008
#
# Enjoy!!!!!!!!!
cd $1
for nomefile in *
do
mv "$nomefile" $(echo "$nomefile" | tr " " "_")
done
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard&
java -jar /home/fedsette/Download/jodconverter-2.2.1/lib/jodconverter-cli-2.2.1.jar -f csv *.$2
processo=`ps ax | grep port=8100 | grep -v grep | grep -v etc | awk '{print $1;}'`
kill $processo

mkdir tmp
mv *.csv ./tmp/
cd tmp
for nomefile2 in *
do
riga_numero=`sed -n '5p;5q' "$nomefile2"`
riga_data=`sed -n '9p;9q' "$nomefile2"`
riga_nome=`sed -n '13p;13q' "$nomefile2"`
riga_importo=`sed -n '38p;38q' "$nomefile2"`
numero_tmp=`expr substr "$riga_numero" 44 10`
data_tmp=`expr substr "$riga_data" 39 10`
nome_tmp=`expr substr "$riga_nome" 16 25`
importo_tmp=`expr substr "$riga_importo" 22 15`
numero=`echo ${numero_tmp%'"'*','}`
data=`echo ${data_tmp%'"'*','}`
nome=`echo ${nome_tmp%'"'*','}`
importo_pre=`echo ${importo_tmp%'"'*''}`
importo=`echo ${importo_pre#''*'"'}`
riga=$numero';'$data';'$nome';'$importo
echo $riga >> prima_nota.csv
done
soffice prima_nota.csv

Ho letto la documentazione al volo … non ho capito se ho fatto un errore o se è un limite quello di non poter andare oltre un certo numero di righe (a cui ho ovviato con il file .sh) … cmq per ottenere piccoli applicativi BUC è ottimo!!

Questa voce è stata pubblicata in Pillole di GNU/Linux. Contrassegna il permalink.

Lascia un commento

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