Introductie tot Bash-scripting
Alex Scriven
Data Scientist
Net als in andere talen kun je variabelen toewijzen met het gelijkteken.
var1="Moon"
Verwijs daarna met $-notatie.
echo $var1
Moon
Noem je variabele zoals je wilt (wel iets zinnigs):
firstname='Cynthia' lastname='Liu'echo "Hi there" $firstname $lastname
Hi there Cynthia Liu
Beide variabelen zijn teruggegeven — nice!
Mis je de $-notatie? Dan is het geen variabele!
firstname='Cynthia'
lastname='Liu'
echo "Hi there " firstname lastname
Hi there firstname lastname
Bash is niet vergevingsgezind over spaties bij het maken van variabelen. Let op spaties!
var1 = "Moon"
echo $var1
script.sh: line 3: var1: command not found
In Bash kunnen verschillende aanhalingstekens iets anders betekenen. Zowel bij maken als printen.
'sometext') = Shell neemt de inhoud letterlijk"sometext") = Shell neemt letterlijk behalve bij $ en backticks De laatste manier creëert een 'shell-in-een-shell', hieronder uitgelegd. Handig om commandline-programma's aan te roepen. Dit doe je met backticks.
Bekijk het effect van verschillende manieren om variabelen te maken
now_var='NOW'now_var_singlequote='$now_var' echo $now_var_singlequote
$now_var
now_var_doublequote="$now_var"
echo $now_var_doublequote
NOW
Het programma date is handig om backticks te tonen
Normale output van dit programma:
date
Mon 2 Dec 2019 14:07:10 AEDT
Gebruik nu de shell-in-de-shell:
rightnow_doublequote="The date is `date`."
echo $rightnow_doublequote
The date is Mon 2 Dec 2019 14:13:35 AEDT.
Het date-programma is aangeroepen, output vastgelegd en inline gecombineerd met de echo-aanroep.
We gebruikten een shell in een shell!
Er is een equivalent van backticks:
rightnow_doublequote="The date is `date`."
rightnow_parentheses="The date is $(date)."
echo $rightnow_doublequote
echo $rightnow_parentheses
The date is Mon 2 Dec 2019 14:54:34 AEDT.
The date is Mon 2 Dec 2019 14:54:34 AEDT.
Beide werken hetzelfde, maar backticks zijn ouder. Haakjes worden vaker gebruikt in moderne toepassingen. (Zie http://mywiki.wooledge.org/BashFAQ/082)
Introductie tot Bash-scripting