eksamensinformasjon - hioahaugerud/os/eksamen/eksamenv2018.pdfdata2500 2018 1/19 eksamensinformasjon...
TRANSCRIPT
DATA25002018
1/19
EksamensinformasjonBokmålEksamensoppgave
Operativsystemer(DATA2500)Bokmål5.juni2018kl.9.00-12.00Hjelpemidler:Ingenhjelpemidlerertillatt.
Andreopplysninger:Lesnøyegjennomoppgaveneførdubegynnerogpasspååbesvareallespørsmålene.Settgjerneegneforutsetningerdersomdusynesoppgaveteksteneruklar.Beskrivforutsetningeneogløsoppgavenutifradem.
Makspoengpådeflesteavdeloppgaveneer10ogdebidrar3.33%hvertilsluttpoengsummensommaksimalter300.Menleggmerketilatdeloppgavene2og5(c)tellermer.Oppgave2teller20%(60poeng)ogoppgåve5(c)telller10%(30poeng).
1(a) LinuxkommandolinjeHvablirietstandardbash-shellresultatetavkommandoen$move/bin/rm/usr/binVelgettalternativ
move:commandnotfound
move:cannotmove'/bin/rm'to'/usr/bin/rm':Permissiondenied
move:cannotopen'/bin/rm'forreading:Permissiondenied
Filen/bin/rmflyttestilkatalogen/usr/bin
Filen/bin/rmflyttestilfilen/usr/bin
Makspoeng:10
1(b) LinuxkommandolinjeHvilkenkommandoutførerkommandoenhostnamepåserverenos3.vlab.cs.hioa.no?
Velgettalternativ
DATA25002018
2/19
Velgettalternativ
scphostnameos3.vlab.cs.hioa.no
sshhostnameos3.vlab.cs.hioa.no
sshos3.vlab.cs.hioa.nohostname
scpos3.vlab.cs.hioa.no:hostname.
wgetos3.vlab.cs.hioa.no/hostname
Makspoeng:10
1(c) LinuxkommandolinjeDuharenfilreadme.txtogutførerkommandoen$catreadme.txt>/dev/nullHvaskjer?Velgettalternativ
Innholdetireadme.txtleggestilinnholdetifilen/dev/null
Outputfracatomdirigerestil/dev/nullogforsvinner
Innholdetireadme.txtslettes
Ennytomfilmednavn/dev/nulllages
Innholdetireadme.txtlagresifilen/dev/null
Makspoeng:10
1(d) LinuxkommandolinjeDuharenfilbilermedfølgendeinnhold:$catbilerstudentbmw500000haugerudberlingo150000kyrreelbil90000HvilkenLinux-kommandoførertilfølgenderesultat?$kommandohaugerudberlingo150000studentbmw500000kyrreelbil90000
Velgettalternativ
DATA25002018
3/19
Velgettalternativ
sort-nbiler
sort-r-k1biler
sort-n-r-kbiler
sortbiler
sort-n-k3biler
sort-k2biler
Makspoeng:10
1(e) LinuxkommandolinjeGittfølgendefilmednavnindex.html:$catindex.html<!DOCTYPEhtml><htmlitemscopeitemtype="http://schema.org/Article"xmlns="http://www.w3.org/1999/xhtml"xml:lang="no"lang="no"><head><title>Hjem-HiOA</title><metaname="Content-Type"content="text/html;charset=utf-8"/><metaname="Content-language"content="no-bokmaal"/><metaname="MSSmartTagsPreventParsing"content="TRUE"/><metaname="generator"content="eZPublish"/><metaname="title"content="Hjem"/><metaitemprop="name"content="Hjem"><metaname="author"content=""/><metaname="p:domain_verify"content="3a11dc5033d5012ab4dce032cb87920c"/>Hvilkenkommandogirfølgendeoutput?$kommandoContent-TypeContent-languageMSSmartTagsPreventParsinggeneratortitleVelgettalternativ
catindex.html|grepname|tail-n5
tail-n5index.html|grepname|cut-d\"-f4
grepnameindex.html|head-n5|cut-d\"-f2
catindex.html|cut-f5|grepname|awk'{print$2}'
Makspoeng:10
2 Bash-scripting
DATA25002018
4/19
Idenneoppgavenskaldulageetshell-scriptmednavndshsomsetteroppetlitedistribuertshellsomdukanbruketilåkjørekommandoerpåandreLinux-maskinersomduharssh-tilgangtil.Brukerensomskalkjørescriptetharenfilsomheter~/hostsogsominnholdernavnetpåandreLinux-hostssomeierenavscriptethartilgangtilmedssh.Dennetilgangenersattoppmedssh-nøkler,slikatbrukerenkanloggeseginntildisseLinux-maskineneutenåtastepassord.Helttilsluttioppgavetekstenviseseteksempelpåhvordandshskalvirkenårmanbrukerdetogidettetilfelletinnholder~/hostsfølgende:$cat~/hostsnexus.cs.hioa.nostudssh.cs.hioa.notrident2.vlab.cs.hioa.no$Nårscriptetdshkjøres,kanduantaatallehostsi~/hostseroppeogkannåsmedsshutenåtastepassord.Detsomskalskjenårdustarterbash-scriptetdsheratdufåroppetpromptdsh$oghvisduskriverinneenkommandotildetteshelletsåskaldenutførespådenlokalemaskinen(rexidetteeksempelet)ogpåallemaskinersomliggerifilen~/hostsogresultatetvisesiterminalensomvistunder.Ettunntakerhvisbrukerenskriverinnkommandoenexittil$dsh,daskalshelletavsluttesogbrukerenskalkommetilbaketildetvanligelokalebash-shellet.Detteervisthelttilsluttieksempeletunder.Omduikkehuskersyntaksfornoenavbash-kommandoenedukanvelgeåbrukeidettescriptet,kandusepådennehjelpefilen.Ieksempeletundererallekommandoersombrukerenskriverinnvistmeduthevetfont.
$./dshdsh$whoami####rex####haugerud####nexus.cs.hioa.no####haugerud####studssh.cs.hioa.no####haugerud####trident2.vlab.cs.hioa.no####haugeruddsh$uname-r####rex####4.4.0-119-generic####nexus.cs.hioa.no####4.4.0-93-generic####studssh.cs.hioa.no####4.4.0-101-generic####trident2.vlab.cs.hioa.no####4.4.0-116-genericdsh$hostname####rex####rex####nexus.cs.hioa.no####nexus####studssh.cs.hioa.no####studssh####trident2.vlab.cs.hioa.no####trident2dsh$php-version####rex####PHP7.0.28-0ubuntu0.16.04.1(cli)(NTS)Copyright(c)1997-2017ThePHPGroupZendEnginev3.0.0,Copyright(c)1998-2017ZendTechnologieswithZendOPcachev7.0.28-0ubuntu0.16.04.1,Copyright(c)1999-2017,byZendTechnologies####nexus.cs.hioa.no####PHP7.0.22-0ubuntu0.16.04.1(cli)(NTS)Copyright(c)1997-2017ThePHPGroupZendEnginev3.0.0,Copyright(c)1998-2017ZendTechnologieswithZendOPcachev7.0.22-0ubuntu0.16.04.1,Copyright(c)1999-2017,byZendTechnologies####studssh.cs.hioa.no####
DATA25002018
5/19
bash:php:commandnotfound####trident2.vlab.cs.hioa.no####bash:php:commandnotfounddsh$exitAvslutterdsh$Skrivdittsvarher...
Words:0
Makspoeng:60
3(a) CogAssemblyHvaslagskodeerlistetoppivenstrekolonne?Finndesompassersammen
PowerShell Assembly Javabytecode bash C
ls-lscript.sh
getstatic#18
Get-ChildItem
#include<stdio.h>
add%rdx,%rbx
Makspoeng:10
3(b) CogAssemblyDukompilereretC-programmedgccprog.cHvainneholderfilena.outetterpå?
Velgettalternativ
DATA25002018
6/19
Velgettalternativ
Shellcode
Bytecode
Maskinkode
C-kode
Assemblykode
Makspoeng:10
3(c) CogAssemblyDukompilereretC-programmedgcc-Sprog.cHvainneholderfilenprog.setterpå?Velgettalternativ
Bytecode
Maskinkode
Assemblykode
Shellcode
C-kode
Makspoeng:10
3(d) CogAssemblyAntaatduharfølgendeC-programmednavnsvar.cpåenLinux-maskin:#include<stdio.h>intsvar=41;voidenlinje(){svar++;}intmain(){printf("Svar=%d\n",svar);printf("Kallerenlinje()...\n");enlinje();printf("Svar=%d\n",svar);}Forklarkorthvordandukompilererogkjørerdetteprogrammetietbash-shelloghvaoutputfraprogrammetblirnårdukjørerdet.
Skrivdittsvarher...
DATA25002018
7/19
Skrivdittsvarher...
Words:0
Makspoeng:10
3(e) CogAssemblyDuendrerlittpåsvar.cslikatdetserslikut#include<stdio.h>intsvar=41;externvoidenlinje();intmain(){printf("Svar=%d\n",svar);printf("Kallerenlinje()...\n");enlinje();printf("Svar=%d\n",svar);}oglageritilleggetprogramen.csomserslikut:voidenlinje(){externintsvar;svar++;}Forklarkorthvafølgendetrekommandoergjør:$gcc-csvar.c-osvar$gcc-cen.c-oen$gccsvaren-orunoghvordandunåkankjøreprogrammet.Restultatetblireksaktdetsammesomnårdukjørteprogrammetiforrigeoppgave.Forklarkorthvorforresultatetblirdetsamme.
Skrivdittsvarher...
DATA25002018
8/19
Skrivdittsvarher...
Words:0
Makspoeng:10
3(f) CogAssemblyDukjørersåkommandoen$gcc-Sen.cogdetlagesdaenfilen.smedfølgendeinnhold:.file"en.c".text.globlenlinje.typeenlinje,@functionenlinje:.LFB0:.cfi_startprocpushq%rbp.cfi_def_cfa_offset16.cfi_offset6,-16movq%rsp,%rbp.cfi_def_cfa_register6movlsvar(%rip),%eaxaddl$1,%eaxmovl%eax,svar(%rip)noppopq%rbp.cfi_def_cfa7,8ret.cfi_endproc.LFE0:.sizeenlinje,.-enlinje.ident"GCC:(Ubuntu5.4.0-6ubuntu1~16.04.9)5.4.020160609".section.note.GNU-stack,"",@progbitsForklarkorthvainnholdetavdennefilenerogspesielthvadetreheltsentralekodelinjenemovlsvar(%rip),%eaxaddl$1,%eaxmovl%eax,svar(%rip)
DATA25002018
9/19
gjør.(Merk:svar(%rip)erenminnereferansetilderiRAMhvordenglobalevariabelensvarligger).Skrivdittsvarher...
Words:0
Makspoeng:10
3(g) CogAssemblyDulagernåenfilminimal.smedfølgendeinnhold
.globlenlinjeenlinje:inclsvar(%rip)retoglardenerstatteen.svedåkjørekommandoen$gccsvarminimal.s-orunNårdunåkjørerprogrammetfårdunøyaktigsammeresultat.Forklarkorthvorforminimal.skanerstattefilenen.s.Detduharlærtidenneoppgavenerdetnyttigåtamedsegtilnesteoppgaveomsynkronisering.
Skrivdittsvarher...
DATA25002018
10/19
Skrivdittsvarher...
Words:0
Makspoeng:10
4(a) SynkroniseringFørdugjørdenneoppgavenbørdugjøreforrigeoppgaveCogAssemblydafunksjonenenlinje()ogsåbrukesidenneoppgavenogerfaringenefradenforrigeoppgavenerviktigeforåløsedenneomsynkronisering.Studerprogrammetthread.cogforklarikortetrekkdetvesentligstesomskjernårdetkjøres.#include<stdio.h>#include<stdlib.h>#include<pthread.h>intsvar=0;externvoidenlinje();void*inc(){printf("Starter;svarverdi:%d\n",svar);for(inti=0;i<10000000;i++){enlinje();}printf("Avslutter;svarverdi:%d\n",svar);}
intmain(){pthread_tthread1,thread2;pthread_create(&thread1,NULL,inc,NULL);pthread_create(&thread2,NULL,inc,NULL);pthread_join(thread1,NULL);pthread_join(thread2,NULL);printf("Mainavslutter;svarverdi:%d\n",svar);exit(0);}
DATA25002018
11/19
Funksjonenenlinje()erdensammesomioppgavenomCogAssemblyogliggerifilenen.c:
voidenlinje(){externintsvar;svar++;}Skrivdittsvarher...
Words:0
Makspoeng:10
4(b) SynkroniseringPåenLinuxmaskinmed8CPU'erkompilererduprogrammeneietbashshellpåfølgendemåte:
$gcc-cen.c-oen$gcc-c-pthreadthread.c-othread$gcc-pthreadenthread-orunDeretterkjørerduprogrammettogangerogresultatetblirfølgende:$./runStarter;svarverdi:0Starter;svarverdi:356150Avslutter;svarverdi:10112917Avslutter;svarverdi:10300354Mainavslutter;svarverdi:10300354$./runStarter;svarverdi:0Starter;svarverdi:618427Avslutter;svarverdi:6893160Avslutter;svarverdi:10868668Mainavslutter;svarverdi:10868668$Dukjørerprogrammet10gangertilogfåraldridetsammesvaret.Forklarkortdisseresultateneoghvasomkanværeårsakentilatresultateneblirforskjelligenårsammeprogramkjøresflereganger.
Skrivdittsvarher...
DATA25002018
12/19
Skrivdittsvarher...
Words:0
Makspoeng:10
4(c) SynkroniseringDukjørernåprogrammetpåenlittannenmåte:$taskset-c0./runStarter;svarverdi:0Starter;svarverdi:2441853Avslutter;svarverdi:15177160Avslutter;svarverdi:15922585Mainavslutter;svarverdi:15922585$taskset-c0./runStarter;svarverdi:0Starter;svarverdi:2599202Avslutter;svarverdi:17348681Avslutter;svarverdi:20000000Mainavslutter;svarverdi:20000000$taskset-c0./runStarter;svarverdi:0Starter;svarverdi:2592637Avslutter;svarverdi:18114661Avslutter;svarverdi:16272351Mainavslutter;svarverdi:16272351$taskset-c0./runStarter;svarverdi:0Starter;svarverdi:2975707Avslutter;svarverdi:17711781Avslutter;svarverdi:20000000Mainavslutter;svarverdi:20000000$taskset-c0./runStarter;svarverdi:0Starter;svarverdi:2803083Avslutter;svarverdi:17302934Avslutter;svarverdi:20000000Mainavslutter;svarverdi:20000000Treavgangeneblirsvaretnå20000000.Forklarhvordanprogrammetkjøresmeddennebrukenavtasksetoghvasomerforskjelligfranårmanbarekjørerdetmed./run.Prøvåforklarehvasomkanværeårsakentilatsvaretnårelativtofteblir20000000menikkealltid.
DATA25002018
13/19
Skrivdittsvarher...
Words:0
Makspoeng:10
4(d) SynkroniseringDubrukernåerfaringenefraoppgavenCogAssemblyogbrukerfilenminimal.s
.globlenlinjeenlinje:inclsvar(%rip)rettilålageennyversjonavprogrammetmed$gcc-pthreadthreadminimal.s-orunNårdunåkjørerdetteprogrammet,fårduhverenestegangnøyaktigdetsammesvaret:$taskset-c0./runStarter;svarverdi:0Starter;svarverdi:3155197Avslutter;svarverdi:17310147Avslutter;svarverdi:20000000Mainavslutter;svarverdi:20000000$taskset-c0./runStarter;svarverdi:0Starter;svarverdi:2828311Avslutter;svarverdi:18090712Avslutter;svarverdi:20000000Mainavslutter;svarverdi:20000000$taskset-c0./runStarter;svarverdi:0Starter;svarverdi:3078129Avslutter;svarverdi:17417198Avslutter;svarverdi:20000000Mainavslutter;svarverdi:20000000$taskset-c0./runStarter;svarverdi:0Starter;svarverdi:2946892
DATA25002018
14/19
Avslutter;svarverdi:18163634Avslutter;svarverdi:20000000Mainavslutter;svarverdi:20000000Foklarpåhvilkenmåtedetresulterendeprogrammetrunendresnårduburkerminimal.soghvorfordunåfårdetsammeresulatet20000000hvergang.Skrivdittsvarher...
Words:0
Makspoeng:10
4(e) SynkroniseringDukjørersåprogrammetlagetmedminimal.sutentasksetpåfølgendemåte:$./runStarter;svarverdi:0Starter;svarverdi:613327Avslutter;svarverdi:7947390Avslutter;svarverdi:11029945Mainavslutter;svarverdi:11029945$./runStarter;svarverdi:0Starter;svarverdi:878021Avslutter;svarverdi:9865620Avslutter;svarverdi:11007289Mainavslutter;svarverdi:11007289$./runStarter;svarverdi:0Starter;svarverdi:888015Avslutter;svarverdi:8496452Avslutter;svarverdi:10370608Mainavslutter;svarverdi:10370608ogdufåraldridetsammesvaret.Forklarhvordandettekanværemuligtiltrossforatdubrukerminimal.s.
Skrivdittsvarher...
DATA25002018
15/19
Skrivdittsvarher...
Words:0
Makspoeng:10
4(f) SynkroniseringDuerstatternåminimal.smedlockMinimal.ssomserslikut.globlenlinjeenlinje:lockinclsvar(%rip)retoglagerrunpåfølgendemåte:$gcc-pthreadthreadlockMinimal.s-orunDeretterkjørerduprogrammetenrekkeganger$./runStarter;svarverdi:0Starter;svarverdi:199526Avslutter;svarverdi:19732245Avslutter;svarverdi:20000000Mainavslutter;svarverdi:20000000$./runStarter;svarverdi:0Starter;svarverdi:250043Avslutter;svarverdi:19744429Avslutter;svarverdi:20000000Mainavslutter;svarverdi:20000000$./runStarter;svarverdi:0Starter;svarverdi:219440Avslutter;svarverdi:19799083Avslutter;svarverdi:20000000Mainavslutter;svarverdi:20000000oghverenestegangdukjørerblirsvaretnå20000000.Forklarhvasomnåskjeroghvordanendringenframinimal.stillockMinimal.sførtetildette.
DATA25002018
16/19
Skrivdittsvarher...
Words:0
Makspoeng:10
4(g) SynkroniseringStuderfølgendepseudo-kodesomdefinerertometoderforåserialiseretrådersomkjørersamtidigoguavhengigavhverandre:staticbooleanlock=false;//fellesvariabelGetMutex(lock){while(lock){}//ventertillockblirfalselock=true;}ReleaseMutex(lock){lock=false;}Tankeneratmetodeneskalbrukespåfølgendemåteavtrådersomskalkjøreetkritiskavsnitt:GetMutex(lock);KritiskAvsnitt();ReleaseMutex(lock);Forklarkorthvordanmetodenesørgerforserialiseringogpåviseventuelttifellerhvorløsningenikkefungerer.
Skrivdittsvarher...
DATA25002018
17/19
Skrivdittsvarher...
Words:0
Makspoeng:10
5(a) PowerShellHvordanfinnerduuthvilkepropertiesogmetodersomobjektenesomreturneresavkommandoenls(somegentligeretaliasforGet-Childitem)har?Velgettalternativ
ls|grepProperty
Get-Properties|ls
ls.GetProperty
(ls).GetProperty
ls|Get-Member
Makspoeng:10
5(b) PowerShellStuderresultatetavfølgendekommandoerutførtietPowerShell:PSC:\Users\haugerud>$now=Get-DatePSC:\Users\haugerud>$now-(ls)[0].CreationTime
Days:1587Hours:18Minutes:49Seconds:27Milliseconds:73Ticks:1371845670739206TotalDays:1587,78434113334TotalHours:38106,8241872002TotalMinutes:2286409,45123201
DATA25002018
18/19
TotalSeconds:137184567,073921TotalMilliseconds:137184567073,921SkrivsånedenPowerShellone-linersomgirdeghvormangedagergammelfilenfil.txter.Dukanantaatfilenliggerimappenduståriogresultatetavkommandoenskalværeiantalldagermeddesimaler.Skrivdittsvarher...
Words:0
Makspoeng:10
5(c) PowerShellIdenneoppgavenskalduskriveetPowerShellscriptmednavnalder.ps1somnårdetkjøresgirdeggjennomsnittligalderforallefilerogmapperidenmappensomscriptetkjøresi.Alderenforenfilerantalldagersidendenblelaget,hvordagerergittmeddesimaler.Nårdukjørerscriptetskaloutputtilsvaredetsomergittifølgendeeksempel:PSC:\Users\haugerud>.\alder.ps1Snitt-alder1364,83201319544dagerfor28filerogmapperPSC:\Users\haugerud>Hvisduskulleløsedenneoppgavenoghaddetilgangtilenweb-browser,villedukanskjegoogleetter"PowerShellforeach"ogdennesideneretavdeførstetreffenefordettesøket.
Skrivdittsvarher...
DATA25002018
19/19
Skrivdittsvarher...
Words:0
Makspoeng:30
Question_2.a_info.txt Sun Jul 08 15:39:16 2018 1
$ man echo
ECHO(1) User Comma
nds ECHO(1)
NAME
echo - display a line of text
SYNOPSIS
echo [SHORT-OPTION]... [STRING]...
echo LONG-OPTION
DESCRIPTION
Echo the STRING(s) to standard output.
-n do not output the trailing newline
-e enable interpretation of backslash escapes
-E disable interpretation of backslash escapes (default)
--help display this help and exit
--version
output version information and exit
If -e is in effect, the following sequences are recognized:
\\ backslash
\a alert (BEL)
\b backspace
\c produce no further output
\e escape
\f form feed
\n new line
\r carriage return
\t horizontal tab
\v vertical tab
\0NNN byte with octal value NNN (1 to 3 digits)
\xHH byte with hexadecimal value HH (1 to 2 digits)
NOTE: your shell may have its own version of echo, which usually supersedes the ve
rsion described here. Please refer to your shell’s documentation for details about
the options it supports.
AUTHOR
Written by Brian Fox and Chet Ramey.
REPORTING BUGS
GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Report echo translation bugs to <http://translationproject.org/team/>
COPYRIGHT
Copyright (C) 2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3
or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO WARR
ANTY, to the extent permitted by law.
Question_2.a_info.txt Sun Jul 08 15:39:16 2018 2
SEE ALSO
Full documentation at: <http://www.gnu.org/software/coreutils/echo>
or available locally via: info ’(coreutils) echo invocation’
GNU coreutils 8.25 February 2
016 ECHO(1)
$ help for
for: for NAME [in WORDS ... ] ; do COMMANDS; done
Execute commands for each member in a list.
The ‘for’ loop executes a sequence of commands for each member in a
list of items. If ‘in WORDS ...;’ is not present, then ‘in "$@"’ is
assumed. For each element in WORDS, NAME is set to that element, and
the COMMANDS are executed.
Exit Status:
Returns the status of the last command executed.
$help while
while: while COMMANDS; do COMMANDS; done
Execute commands as long as a test succeeds.
Expand and execute COMMANDS as long as the final command in the
‘while’ COMMANDS has an exit status of zero.
Exit Status:
Returns the status of the last command executed.
$help read
read: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t t
imeout] [-u fd] [name ...]
Read a line from the standard input and split it into fields.
Reads a single line from the standard input, or from file descriptor FD
if the -u option is supplied. The line is split into fields as with word
splitting, and the first word is assigned to the first NAME, the second
word to the second NAME, and so on, with any leftover words assigned to
the last NAME. Only the characters found in $IFS are recognized as word
delimiters.
If no NAMEs are supplied, the line read is stored in the REPLY variable.
Options:
-a array assign the words read to sequential indices of the array
variable ARRAY, starting at zero
-d delim continue until the first character of DELIM is read, rather
than newline
-e use Readline to obtain the line in an interactive shell
-i text Use TEXT as the initial text for Readline
-n nchars return after reading NCHARS characters rather than waiting
for a newline, but honor a delimiter if fewer than NCHARS
characters are read before the delimiter
-N nchars return only after reading exactly NCHARS characters, unless
EOF is encountered or read times out, ignoring any delimiter
-p prompt output the string PROMPT without a trailing newline before
Question_2.a_info.txt Sun Jul 08 15:39:16 2018 3
attempting to read
-r do not allow backslashes to escape any characters
-s do not echo input coming from a terminal
-t timeout time out and return failure if a complete line of input is
not read within TIMEOUT seconds. The value of the TMOUT
variable is the default timeout. TIMEOUT may be a
fractional number. If TIMEOUT is 0, read returns immediately,
without trying to read any data, returning success only if
input is available on the specified file descriptor. The
exit status is greater than 128 if the timeout is exceeded
-u fd read from file descriptor FD instead of the standard input
Exit Status:
The return code is zero, unless end-of-file is encountered, read times out
(in which case it’s greater than 128), a variable assignment error occurs,
or an invalid file descriptor is supplied as the argument to -u.
Question_5.c_foreach.txt Sun Jul 08 15:39:16 2018 1
ForEach (loop statement)
Loop through a set of input objects and perform an operation (execute a block of statements
) against each.
Syntax
ForEach (item In collection) {ScriptBlock}
key
item A variable to hold the current item
collection A collection of objects e.g. filenames, registry keys, servernames
ScriptBlock A block of script to run against each object.
The collection will be evaluated and stored as an array in memory before the scriptblock is
executed.
The foreach statement does not use pipelining (unlike ForEach-Object ) If you use foreach i
n a command pipeline PowerShell will actually run the foreach alias that calls ForEach-Obje
ct.
Use the ForEach statement when the collection of objects is small enough that it can be loa
ded into memory.
Use the ForEach-Object cmdlet when you want to pass only one object at a time through the p
ipeline, minimising memory usage. In most cases ForEach will run faster than ForEach-Object
, there are exceptions, such as starting multiple background jobs. If in doubt test both op
tions with Measure-Command.
In PowerShell 4.0 and later, the ForEach method provides even faster performance.
Examples
Loop through an array of strings:
$trees = @("Alder","Ash","Birch","Cedar","Chestnut","Elm")
foreach ($tree in $trees) {
"$tree = " + $tree.length
}
Loop through a collection of the numbers, echo each number unless the number is 2:
foreach ($num in 1,2,3,4,5) {
if ($num -eq 2) { continue } ; $num
}
Loop through a collection of .txt files:
foreach ($file in get-ChildItem *.txt) {
Echo $file.name
}
"The only way to do great work is to love what you do. If you haven’t found it yet, keep lo
oking. Don’t settle. As with all matters of the heart, you’ll know when you find it" - Stev
e Jobs
Related:
$foreach variable - Refers to the enumerator in a foreach loop.
Break statement
Continue statement
ForEach-Object - Loop for each object in the pipeline (foreach)
ForEach (method) - Loop through items in a collection
For - Loop through items that match a condition
IF - Conditionally perform a command
Switch - Multiple if statements
While - Loop while a condition is True