Come ottimizzare uno script bash
Ottimizzazione tramite l’uso delle
variabili
.
A cura di
Totò Fiandaca
| issue
#112
#111
#110
| guida/e
Andrea Borruso
Introduzione
Per realizzare le versioni Portable di QGIS è stato usato il seguente script bash
script iniziale
#!/bin/bash
set -x
curl http://download.osgeo.org/qgis/win64/QGIS-OSGeo4W-3.4.10-1-Setup-x86_64.exe >QGIS-OSGeo4W-3.4.10-1-Setup-x86_64.exe
7z x QGIS-OSGeo4W-3.4.10-1-Setup-x86_64.exe
mv '$_25_' OSGeo4W
mv '$PLUGINSDIR' OSGeo4W
cd OSGeo4W/bin
mv qgis-ltr.bat.tmpl qgis-ltr.bat
cd ../apps/qgis-ltr/bin
curl -L "https://github.com/pigreco/QGIS_portable_3x/raw/master/file/win64/win64.zip" >win64.zip
7z x win64.zip
rm win64.zip
cd ../../../../
7z a OSGeo4W_3410.7z OSGeo4W
- dove occorre scrivere tre volte il nome del file da scaricare (
QGIS-OSGeo4W-3.4.10-1-Setup-x86_64.exe
) con potenziali errori di scrittura; - nell’ultima riga dello script: occorre formulare il nome (
OSGeo4W_3410.7z
) della cartella finale da zippare;
con le ottimizzazioni:
- scrivo una sola volta il nome del file da scaricare assegnandola alla variabile (
versione
); - il nome della cartella finale viene estratto automaticamente facendo uso di
sed
che lo associa alla variabilenome
;
script ottimizzato:
script ottimizzato
#!/bin/bash
set -x
versione="QGIS-OSGeo4W-3.4.15-1-Setup-x86_64.exe"
nome=$(sed -r 's/(QGIS-)(.+)(-Setup-x86_64.exe)/\2/g' <<<"$versione")
echo "$nome"
curl http://download.osgeo.org/qgis/win64/"$versione" >"$versione"
7z x "$versione"
mv '$_25_' OSGeo4W
mv '$PLUGINSDIR' OSGeo4W
cd OSGeo4W/bin
mv qgis-ltr.bat.tmpl qgis-ltr.bat
cd ../apps/qgis-ltr/bin
curl -L "https://github.com/pigreco/QGIS_portable_3x/raw/master/file/win64/win64.zip" >win64.zip
7z x win64.zip
rm win64.zip
cd ../../../../
7z a "$nome".7z OSGeo4W
Riferimenti
Chi ha cucinato questa ricetta o ne ha tratto ispirazione
Ultima modifica 19/07/2020: close #50 (a1365d8)