sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #85990
Re: Bash-mystik - eller er det xview der driller ?
On Sat, 03 Dec 2005 14:22:30 +0000
Jørgen wrote:
> donald_j_axel wrote:
> > I jagten på en konklusion overvejes flg.:
> >
> > awk, C: Et udtryk er sandt, hvis det er forskelligt fra 0
> > shell: Et udtryk er falsk, hvis det er forskelligt fra 0.
> >
> > Logik definerer ikke sandheden, logik defineres af mennesker.
> >
> >
> Det kender jeg fra C, awk ved jeg ikke noget om, shell-script har jeg
> ikke brugt så meget, at jeg har haft brug for at vide det.
> Men jeg er lidt i tvivl om dit udsagn, mener du virkelig, at shell på
> det punkt adskiller sig fra andre programmeringssprog?
Jeg ved ikke om Bash og Ksh - shell'erne adskiller sig fra
**alle** andre programmeringssprog, men hvis du vil læse en
while-loop som man plejer, så fortsætter den, så længe det, der er
inde i dens test-expression, sandt.
ex.: while true ; do { date; sleep 1 ; } done
Man kan se en exitcode med kommandoen echo $? . Det virker éen gang.
Anden gang er den altid 0. $? er exitkoden for den sidst udførte
kommando.
"true" er en kommando, som har exit-code 0. Normalt ønsker man, at
et program skal returnere en fornuftig fejlkode, derfor har man
valgt at exit-code = 0 er ok og exit-code != 0 er not-ok.
Ok er så blevet til true, og not-ok til false.
>
> Her finder man en anden forklaring:
> http://pangea.stanford.edu/computerinfo/unix/programming/shell/expressions.html
> Citat:
> Logical expressions.
> These are usually used in if statements for conditional execution.
> Logical expressions always evaluate to either the value 1 if true, or
> value 0 if false.
> citat slut.
Det er en C-shell, der gennemgåes, og den er lavet
så den passer bedre med C-sprogets syntax. Bl.a. har den
false == 0 som i C m.v.
Flot Unix-kursus. Godt afsnit om expressions, jeg kunne ikke lige
se, om det indgår i den Unix-lærebog som har index/ indholds-
fortegnelse i venstre margin. (M.a.o. hvorfra linkes der til expressions?)
> Den forskel i brugen af wildcards, som Frank Damgaard påviser, er
> ejendommelig, men da jeg som nævnt ikke er shell expert, skal jeg
> undlade kommentarer.
Frank's eksempler var en god guide til selv at experimentere.
> Jeg vil heller ikke yderligere kommentere logikken eller fornuften i
> denne sag, men kun håbe at Jan Holst Jensen har overvundet sin
> forvirring om brugen af back slash.
Ja, det vil jeg også håbe. Men i et større perspektiv tror jeg at
vi bliver nødt til at sige, at shell-håndtering af fil-navne er
brudt (broken) for tiden eller i det mindste er ret
counter-intuitive. Håndteringen af tegnsæt, wildcards, spaces og
variabel expansion kræver yderste påpasselighed.
Jeg glemte at nævne, at man i nogle tilfælde kan sætte INTERNAL
FIELD SEPARATOR IFS="" for at undgå opsplitning af variable i
separate strings, men det er heller ikke uden problemer og slet
ikke nemt at håndtere.
Det er ikke en grund til at give op. Brug reglen "Keep it simple
and small", så man ikke kommer ud i mekanikker, man ikke kan overskue.
Jeg kan ikke lide den normale parameter-substitution af KISS.
Jeg synes det er de kloge, som holder tingene på et simpelt niveau.
Den originale opgave (med xview) aner jeg ikke, hvad meningen var
med, men hvis man vil have xv (er det den samme som xview?) til at
loope igennem billeder med forsinkelse, så folk kan nå at se
billederne, så hedder kommandoen:
xv -wloop -wait 6 /var/images/*jpg
og det skal virke også selv om der er huller i filnavnene.
Hvis man vil have xv til at vise dem i maximal størrelse, bruges
enten -max eller -maxpec (som bevarer forholdet mellem X og Y).
xv -wloop -wait 4 -maxpec /images/*.png &
Det sidste og-tegn (ampersand) bevirker at programmet giver afkald
på terminal-vinduet (undtagen til fejlmeddelelser, hvis der kommer
sådan nogen.)
Venlig hilsen/Donald
--
donald_j_axel donax snabela get2net.dk -- http://d-axel.dk/
References