Re: oversete shellkommandoer - del dine tricks

From: Kristen Nielsen (none@krn--krn.dk.lh.bsd-dk.dk)
Date: Fri 12 Jun 2009 - 02:10:40 CEST


Date: Fri, 12 Jun 2009 02:10:40 +0200
From: Kristen Nielsen <none@krn--krn.dk.lh.bsd-dk.dk>
To: bsd-dk@bsd-dk.dk
Subject: Re: oversete shellkommandoer - del dine tricks

Søren Schrøder wrote:
> Hej liste.
>
>
[stuff deleted]
> Opgaven lyder på at der
> skal være 4 directories af typen /nfs1..3 der hver skal have 4 buckets
> med 5 buckets hver, således at der bliver 60 (3*4*5) directories der
> hedder /nfsx/bucketY/bucketZ
>
> Her er jot din bedste ven: "jot 3 1" outputter 3 linier af tal,
> startende fra 1, dvs 1 2 3.
>
> for X in `jot 3 1`
> do
> for Y in `jot 4 1`
> do
> for Z in `jot 5 1`
> do
> #vi echoer bare, mens vi leger med jot
> echo mkdir -p /nfs$X/bucket$Y/bucket$Z
> done
> done
> done
>
>

Hej Søren / liste

Tak for det, jeg lærte lige en ny kommando jeg ikke tidligere havde hørt
om - dejligt.

Jeg blev inspireret til at bidrage med et shelltrick jeg selv har brugt
i mange år.

i /bin/sh (mfl) giver {<kommasepareret liste>} en ekspansion af
elementerne i udtrykket.

f.eks.

> echo {1,2,3}{a,b,c}
1a 1b 1c 2a 2b 2c 3a 3b 3c

i bash er der en særlig version med intervalangivelse

> echo {1..3}{a..c}
1a 1b 1c 2a 2b 2c 3a 3b 3c

Dvs opgaven med at lave et hiraki af kataloger kan derfor løses således:

i /bin/sh:
mkdir -p /nfs{1,2,3}/bucket{1,2,3,4}/bucket{1,2,3,4,5}

og sådan i bash
mkdir -p /nfs{1..3}/bucket{1..4}/bucket{1..5}

vh Kristen.



This archive was generated by hypermail 2b30 : Tue 30 Jun 2009 - 23:00:01 CEST