Det här är del 3 av mina inlägg om skript i Linux för att göra om gpxfiler till shape. Har du inte läst de två tidigare så bör du börja med dessa.
Då har vi tittat på hur man gör om gpxfiler till shape och hur man får skriptet att upprepa sig tills man säger ifrån. Nu skall vi titta på hur man gör om man har en mängd filer som man vill bearbeta på en gång, och inte en i taget. Rent tekniskt så kommer filerna att bearbetas en åt gången, men för användaren så begränsas handhavandet till att peka ut en katalog där filerna finns.
Principen är den samma som tidigare och utgångspunkten är skriptet från i måndags.
Till att börja med så modifieras texten som användaren möter till att ge instruktioner att ange en katalog och inte en fil.
echo -n ”Skriv in sökväg till (eller dra-och-släpp) katalog med gpx-filer >”
Eftersom variabeln ”Filnamn” nu är en katalog så måste ett ”wildcard” läggas till för att passa alla gpxfiler. Därför modifieras den efterföljande raden.
Filnamn=${Filnamn//\’/}”/*.gpx”
Före if-satsen som kontrollerar om loggfilarna redan finns så läggs en loop till som i variabeln ”Fil” listar alla gpxfiler på den angivna sökvägen. Man kan även lägga till en rad för att skriva ut vilken fil skriptet för tillfället kör.
for Fil in $Filnamn;
do
echo ”Bearbetar: $Fil”
if [ -f $Testa ]
Variabeln ”Filnamn” kan tyckas missvisande, men då det är ett arv från det tidigare skriptet så låter jag det vara så länge. Du kan ändra namnet till något som är mer passande om du vill, bara du tänker på att ändra på alla platser.
Eftersom namnet på gpxfilen nu lagras i variabeln ”Fil” och inte ”Filnamn” så måste detta ändras i de båda ”ogr2ogr” kommandona.
ogr2ogr -update -append $Target $Filnamn ”tracks” ”waypoints” $DatumFix $Prj
…
ogr2ogr $Target $Filnamn ”tracks” ”waypoints” $DatumFix $Prj
För att avsluta skriptet så stängs loopen genom att ersätta ”clear” med ”done” och ”echo” kommandot ändras så att det blir mer passande.
echo ”Filerna ovan har lagrats på sökvägen $Target”
Jag väljer att radera ”clear” ovan för att jag inte vill rensa listan med gpxfiler direkt utan vänta de angivna sekunderna så att användaren har en chans att se resultatet. Om du tycker att listan visas för kort tid kan du ersätta ”sleep” kommandot med ”read s” som väntar på att du skall mata in något i den godtyckliga variabeln ”s” innan det avslutas.
Såja, då var det klart. När du nu kör skriptet och ”drar-och-släpper” en katalog, eller skriver in sökvägen till en katalog så kommer alla gpxfiler att bearbetas och sparas i loggfilerna på den i skriptet angivna sökvägen. Det är bara gpxfiler som behandlas, alla andra filer och kataloger hoppar skriptet över (med hjälp av angivet ”wildcard” i början). Vill du även söka i underkataloger så måste skriptet modifieras ytterligare.
Det var allt om skript för den här gången.