- «wildcards» er nyttige for søk.
*
: matcher ingen eller flere tegn.?
: matcher kun ett tegn.[abc]
: kaller «character class». Matcher en av tegnene mellom klammene.[!abc]
: Matcher alle tegn som ikke er mellom klammene.[1-10]
: Kalles «range» og matcher alt mellom to parametre, for eksempel[1-10]
eller[B-T]
.- Det finnes mange predefinerte «wildcards» som
[[:alpha:]]
,[[:digit:]]
,[[:upper:]]
og så videre. - Overse «wildcard» med
\
.
#bash 3
Ting jeg har lært om bash
-
13. september 2024
-
12. september 2024
- Funksjoner i Bash må defineres før de brukes.
- To måter å angi dem på:
function my-function() { # kode } my-function() { # kode }
- Vi angir navnet på funksjonen for å kjøre den. Ikke med parentes etter. Kun
my-function
. - Funksjoner kan kalle andre funksjoner.
- Funksjoner kan måtta argumenter. I funksjonen henvises de til med
$1, $2, $3
og så videre.$@
samler alle, og$0
er selve scriptet. - For å sende argumenter til en funksjon skriver man det etter kallet:
my-function Peter
- Alle variabler er globale, og må defineres før de brukes.
- Variabler i funksjoner blir ikke globale før funksjonen har kjørt.
local MY_VAR
er en variabel som kun vil være tilgjengelig i en funksjon. Det er best practice. Lokale variabler brukes kun første gang variabelen etableres.- Funksjoner returnerer «exit status». Den kan man definere selv også med
return KODE
. Hvis ikke angitt er det siste kommando som bestemmer. Kan kun angi manuell kode mellom 0-255.
-
9. september 2024
- Et Bash-script er et kommandolinjeprogram som inneholder kommandoer som leses av en interpreterer. For shell-scripter er det shell som er interpreter.
- Alle kommandoer som kan kjøres i kommandolinjen kan også kjøres i et shell-script. Bash-script er et shell-script.
- Alle bash-script starter med
#!/bin/bash
.#!
kalles «shebang», og følges av banen til interpretereren. Scriptet blir sendt til interpretereren som et argument. - For å kjøre et script må vi først gi tilgang ved å angi for eksempel
chmod 755 script.sh
. - For å kjøre et script kan vi skrive
./script.sh
eller barescript.sh
om det er gjort tilgjengelig på systemnivå. - Variabler angis uten mellomrom og angis som regel med store bokstaver:
VARIABEL="Hei"
. - For å henvise til en variabel:
$VARIABEL_NAVN
. - Man bruker krøllparentes rundt en variabel om man ønsker å legge til noe rett etter variabelen:
${VARIABEL}-
. - Vi kan også definere en variabel med resultatet av en kommando ved å angi kommandoen i parentes:
VAR=$(KOMMANDO)
. *Variabler kan ikke starte med tall, inneholde spesielle tegn eller ha bindestrek. - For å sjekke om noe er sant eller falskt kan vi «teste» ved å angi påstanden i klammer
[ -d ]
eller ved å skrive «test»:test -d
. Se manualenman test
for mer. - If / else:
if [ condition ] then commando elif [ condition ] then commando else commando fi
- For-løkke:
for ITEM in LIST do commando done
- Posisjonelle parametre refereres med
$1 $2 $3
og så videre.$0
henviser til selve scriptet. - Alle parametere kan samles i en liste med
$@
. - For å be om inndata fra bruker:
read -p "PROMPT" VARIABEL
. «Prompt» er teksten som skal vises i kommandolinjen, og «VARIABEL» er navnet på variabelen som lagrer inndataene. - Alle kommandoer har en «exit-status» eller «exit-kode» fra 0-255. 0 er suksess.
- For å se en kommandos statuskode skriver man
$?
rett etter kommandoen. &&
betyr «og», mens||
betyr «eller».- Vi kan bruke semikolon for å lenke flere kommandoer. Alle kjøres uansett foregående kommandos statuskode.
- Vi kan angi en statuskode manuelt for å spesifisere spesifikke statuser.