Toon posts:

[BASH]Uitvoer naar variabele

Pagina: 1
Acties:

Verwijderd

Topicstarter
Onderstaand script zou een aantal directories door moeten werken en de permissies van httpdocs moeten vergelijken met de variabele OK. Om dat te doen wil ik het resultaat van de gefilterde listing opslaan in TEST maar dit gaat niet goed. Het commando zelf geeft exact de juiste informatie maar dit wordt niet opgeslagen in TEST.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
OK="drwxr-xr-x"
ls -d 1*| while read LINE ; do
        TEST=`ls -l $LINE/webspace | grep httpdocs | awk '{print $1}'`
        ls -l $LINE/webspace | grep httpdocs | awk '{print $1}' ;
        if [ "$TEST" = "$OK" ] ; then
                echo $TEST $OK
                echo $LINE = OK
        else
                echo $TEST $OK
                echo chmod 755 $LINE/webspace/httpdocs
        fi
done


Resulteerd b.v. in:
code:
1
2
3
drwxr-x---
drwxr-xr-x
chmod 755 106158/webspace/httpdocs


Terwijl er had moeten staan:
code:
1
2
3
drwxr-x---
drwxr-xr-x drwxr-x---
chmod 755 106158/webspace/httpdocs


Wat doe ik verkeerd? Gaat dit niet goed omdat deze truc niet werkt als je iteratief door een aantal gegevens heen loopt?

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 23:23

deadinspace

The what goes where now?

Hier doet je script wel wat je verwacht... Weet je zeker dat het die eerste output geeft?

Het volgende script bereikt trouwens hetzelfde, maar dan een stuk eenvoudiger en sneller:
#! /bin/sh
chmod 755 1*/webspace/httpdocs

;)

[ Voor 3% gewijzigd door deadinspace op 27-06-2008 19:57 ]


Verwijderd

Topicstarter
@deadinspace, thnx. Reden dat ik niet gewoon de rechten wil veranderen is dat ik alleen de directories met bovenstaante permissies wil aanpassen. Zoals het script nu werkt worden altijd de permissies aangepast. Immers "niks" is niet gelijk aan drwxr-xr-x. ;-)

Verwijderd

find . -type d -name httpdocs ! -perm 0755 | while read dir; do chmod -v 0755 $dir; done

Verwijderd

Topicstarter
@Cheatah: dat is 'm, elegant en snel. Dankjewel.

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 23:23

deadinspace

The what goes where now?

Verwijderd schreef op vrijdag 27 juni 2008 @ 22:19:
Reden dat ik niet gewoon de rechten wil veranderen is dat ik alleen de directories met bovenstaante permissies wil aanpassen.
De permissies aanpassen naar 755 van die directories die niet al 755 zijn is exact hetzelfde als de permissies van alle directories aanpassen naar 755. In beide gevallen eindigen alle directories als 755.

Dus tenzij je een goede reden hebt om iets anders te gebruiken is de simpelste oplossing de beste.

Merk trouwens op dat Cheatahs oplossing niet de door jou aangegeven directories controleert, maar alle directories die httpdocs heten.

  • capedro
  • Registratie: Oktober 2000
  • Laatst online: 17-12-2025
Of gewoon:

code:
1
 find . -type d -exec chmod 755 {} \;

My weblog

Pagina: 1