#!/bin/sh
when a child is forked or created from its parent, it receives a copy of the parents environment (incl env variabeles). child can change it's own env but those changes do noot reflect the parent
- wanneer je een shell script draait, een copy van de shell (subshell) wordt aangemaakt
command substitutie
shell voert een set of commands uit en substitueert de output in de paats van de commands. Gebruik hiervoor de volgende vorm :
`command` (let op backquote of backticks gebruiken geen single quote
vb: DATE=`date` of USERS=`who|wc -l`
Quoting
shell interpreteert bepaalde speciale characters, bijv wildcard of $. Soms is het handig om shell substitie uit te zetten en het character zelf te gebruieken. Het uitzetten van de speciale betekenis van een character heet QUOTING.
drie manieren om quoting uit te zetten
- backslash, single quote en dubbele quote
* backslash gebruik je om het eropvolgende character letterlijk te nemen
* single quote gebruik je om een hele string letterlijk te maken, alle speciale characters tussen quotes verliezen hun speciale betekenis (voor elke char wordt een \ gezet als het ware)
echo '
Als je een single quote in een string wil gebruiken dan backslash ervoor
dus echo It\' s friday
* Dubbel quotes zijn een mengvorm, niet alles wordt letterlijk genomen.Veel speciale characters verliezen hun speciale betekenis met de volgende uitzonderingen:
$ ` \$ \` \" \\
hiermee wordt het mogelijk om echo "$USER is jarig op `date`" contstructies te maken
Newline char
Newline char zit aan eind van iedere regel in een shell script Unix. Speciaal char dat zegt einde commandline.
Regular Expressions
Het is verstandig om regular expressies altijd te quoten zodat de filename niet door de shell ge-expand wordt. Dit hoeft niet te gebeuren afhankelijk van de inhoud van de file
Echo escape sequences
Echo kan bepaalde escape sequences gebruiken bijv \n newline. Hoe gaat dit samen met quoting regles
echo "Line 1\nLine 2" ==>
Line 1
Line 2
Uitleg: omdat \n tussen dubbel quotes staat wordt het als normaal character beschouwd en doorgegeven naar echo command. Echo heeft eigen special characters, /n en displayed nieuw line
echo Line 1\nLine 2==>
Line 1nLine 2
Uitleg: \n is niet quoted, daarom haalt de shell de backslash weg voor de echo. Echo ziet dus een doodgewone n en geen newline
Geen opmerkingen:
Een reactie posten