Skrot frå arkivet: Bash

Merknad: Dette innlegget er fleire år gammalt. Informasjonen kan vere utdatert.

Eg har nyleg rydda litt i filer og mappar kring om på harddiskane mine. Her er noko av det eg fann:

#!/bin/bash
# 
# Tek i mot ein tekststreng, og sjekker opp mot ei eksisterande tekstfil.
# Viss teksten ikkje finst frå før, vert det lagt til i fila på ny line.
 
filnamn="tekstfil.txt" # Fila me skal nytta.
 
clear
echo "*******************************************************"
echo "*            Legg til tekst i ei tekstfil             *"
echo "*******************************************************"
echo ""
echo "(Skriv «slutt» for å stogga)"
echo ""
echo ""
 
# Funksjonen les() legg teksten du skriv inn i ein variabel $tekst
les() {
	echo -n "Skriv inn tekst: "
	read tekst
}
 
# Funksjonen sjekkfil() ser om teksten finst i fila
sjekkfil(){
	finst=0 # Teljaren $finst er lik 0
	while read line
	do
		if [ "$line" = "$tekst" ] 
		then
			finst=1 # Viss teksten finst, set teljaren $finst lik 1
		fi
	done < $filnamn
	# Viss teksten ikkje fanst i fila, er teljaren $finst framleis lik 0
}
 
echo "-------------------------------------------------------"
les # Start fyrste innlesing
while [ "$tekst" != "slutt" ] # Utfør heilt til brukaren skriv «slutt»
do
	sjekkfil # Sjekk om teksten finst i fila
	if [ $finst -eq 0 ] # viss teksten ikkje finst
	then
		echo "$tekst">>$filnamn  # Legg til på slutten av fila
		echo "La til $tekst."
		echo ""
	else # Viss teksten finst
		echo "$tekst finst allereie."
		echo ""
	fi
	les # Ny innlesing
done
 
echo "-------------------------------------------------------"
echo ""
echo "Ferdig med innskriving av tekst. Her er heile fila:"
while read line 
do
	echo $line # Skriv ut fila.
done < $filnamn
 
exit

Kva

Dette er eit bash-skript. Innleiingsvis står det ei høveleg grei forklaring på kva skriptet gjer. Du skriv inn ein tekst, skriptet sjekker om den teksten finst frå før i fila tekstfil.txt, og viss den ikkje gjer det, vert teksten lagt til på ei ny line. Skriptet køyrer heilt til brukaren skriv «stopp», og då prentar skriptet ut alt innhaldet i fila.

Kvifor

I 2009 tok eg nokre studiepoeng i skriptprogrammering (Bash) frå Høgskulen i Nesna avd. Mo i Rana. Dette skriptet var ei av oppgåvene me fekk. Ikkje veldig elegant eller banebrytande, men enkelt og får jobben gjort. Så lengje PEBKAC-feil ikkje oppstår, t.d. at nokon endrar namn på tekstfila. Eg tykte studiet var artig. Eg hadde aldri prøvd meg med Bash før, men var godt kjent med til dømes PHP og JavaScript frå før. Skriptprogrammering er ganske likt same kva språk det føregår i, det er banalt sagt berre variablar, spørjingar og lykkjer. Og sjølvsagt innebygde og eigenlaga funksjonar. Dette skriptet skal demonstrera dette. Variablar: $finst, $filnamn. Spørjingar: if, then, else. Lykkjer: while, do, done. Innebygde funksjonar: echo, clear, read. Eigenlaga funksjonar: les(), sjekkfil().

Permanent link to this article: https://boba.no/2012/06/skrot-fra-arkivet-4/