← Back to team overview

sslug-teknik team mailing list archive

Re: Bash for-loop; skriv tæller med foranstillede nuller?

 

On Mon, 30 Mar 2009 22:27:44 +0200, Henrik Christian Grove <sslug@xxxxxxx> wrote:

"Michael Schmidt" <michael.zmit@xxxxxxxxx> writes:

On Sun, 29 Mar 2009 11:12:43 +0200, Jon Bendtsen <bendtsen@xxxxxxx> wrote:

On 29/03/2009, at 10.21, Martin Møller Skarbiniks Pedersen wrote:

2009/3/29 Michael Schmidt <michael.zmit@xxxxxxxxx>:

Aha! jeg tænkte ikke over at seq var en selvstændig funktion.

Det er det heller ikke, det er et program. (Men forskellen er
selvfølgelig ligegyldig i dette tilfælde)

Jeg har heller ikke gennemskuet hvorfor det skal stå omkranset af "
` ", men

Overvej at bruge $(...) istedet for `...`.

Det er sikkert rigtig smart og nyttigt, men mit "problem" er at jeg ikke
ved hvad syntaksen "dækker" / bruges til.
Mit gæt (og det er et gæt) er at dette er den aktuelle returværdi
fra den indre funktion, som så skifter ved hvert kald fra den ydre
funktion.

Du er ikke helt galt på den, men det der sker er at den indre kommando
bliver udført først og uddata bliver indsat i den ydre.

Hvis vi f.eks. skriver (% er min prompt - zsh-standard):
% echo $(seq 1 5)
så kører kommandofortolkeren først "seq 1 5", det giver:
1
2
3
4
5
og så kører den "echo 1 2 3 4 5" (bemærk at linieskiftene bliver til
mellemrum), og uddata fra den kommando er (stor overraskelse :-) ):
1 2 3 4 5

Mange tak for denne sidste lille afklaring.
Jeg måtte lige teste og udfaldet bekræfter din gengivelse:

Jeg forventede oprindeligt at

]$ echo $(seq 1 $(seq 1 5))

Ville producere et resultat a la:

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

men da den indre kommando returnere "1 2 3 4 5" til den ydre; ekspanderet til:

]$ echo $(seq 1 1 2 3 4 5)

og seq kun accepterer 3 parametre, fejler den -som forventet :)

Endnu engang tak!

--
Med venlig hilsen
/Zmit/
RLU # 314205


References