Kezdőlap › Fórumok › Programozás › Bash script
- This topic has 437 hozzászólás, 56 résztvevő, and was last updated 13 years, 7 months telt el by
Goosfrabaa.
-
SzerzőBejegyzés
-
2008-10-29-12:49 #2053589
Felizgatott a problema es irtam egy kis quick-and-dirty scriptet a dologra. Otletet meriteni lehet, hogy jo lesz.
#!/bin/bash
for i in `cat /etc/group`; do
group=`echo $i | cut -d „:” -f 1`
gid=`echo $i | cut -d „:” -f3`
usr_number_grp=`echo $i | cut -d „:” -f4 | tr „,” „n” | grep -v ^$ | wc -l`
usr_number_pwd=`cat /etc/passwd | cut -d „:” -f 4 | grep ^$gid$ | wc -l`
echo „group: $group user number: $(expr $usr_number_grp + $usr_number_pwd)”
done2008-10-29-15:31 #2053590dtk1985 wrote:bocs, en fogalmaztam felre. ugy ertettem hogy, az /etc/group-ban csak masodlagos hozzarendelesek vannak. /etc/passwd-ben a felhasznalonak van egy default groupja, oda ha jol tudom csak 1 group kerulhet felhasznalokent. az /etc/group-ban pedig meeg hozzaadhatunk felhasznalokat (amelyek rendelkeznek mar egy default grouppal) a csoportokhoz.
vegulis felesleges az egesz mert en csak az /etc/grouppal fogok foglalkozni a scriptben, meg ha igy nem is kapok hiteles informaciokat. tanar valoszinu elnezett valamit es nem szamolt vele hogy ez nem oldhato meg olyan egyszeruen.Értem már, hogy mit mondasz: ha az alapértelmezett csoport csak a passwd-ben van és ott is csak számmal.
2008-10-29-15:35 #2053591dotmind wrote:Felizgatott a problema es irtam egy kis quick-and-dirty scriptet a dologra.Mikre nem izgulnak az emberek! :)))
Amúgy első ránézésre jónak tűnik. 🙂2009-01-29-08:28 #2053592Hello.
Lenne egy kérdésem, amire eddig nem találtam megoldást.
Van egy pipe amiből az első program visszatérési értékét szeretném kiolvasni.
Tehát, hogy értsétek miről van szó itt egy példa:Code:`ls /dir1 2>&1 | tee out.txt`Ha ezután lekérdezem a „$?” változót természetesen nulla lesz, mivel a „tee” parancs hiba nélkül lefutott. De nekem az „ls” visszatérési értéke kellene.
2009-01-29-09:22 #2053593Hirtelen ez jut eszembe:
Code:(ls /dir1 2>&1 ; LS_RETURN=$?) | tee out.txtÉs ott lesz az LS_RETURN-ben az értéked, amivel azt csinálsz, amit akarsz 😉
2009-01-29-14:02 #2053594uzsolt wrote:Hirtelen ez jut eszembe:Code:(ls /dir1 2>&1 ; LS_RETURN=$?) | tee out.txtÉs ott lesz az LS_RETURN-ben az értéked, amivel azt csinálsz, amit akarsz 😉
Kösz.
Most nem vagyok linux közelbe >:( de biztos jó.
Én így próbáltam:Code:ls /dir1 2>&1 LS_RETURN=$? | tee out.txtés így nem működött.
Nem volt zárójel meg pontosvessző.2009-01-29-15:36 #2053595Code:$ ls /dir1 2>&1 LS_RETURN=$?
ls: /dir1 nem érhető el: Nincs ilyen fájl vagy könyvtár
ls: LS_RETURN=0 nem érhető el: Nincs ilyen fájl vagy könyvtárAzaz: az LS_RETURN=$? részt is az ls kapja meg paraméterként. Ezért kell a pontosvessző, hogy egy külön parancs legyen.
Zárójel: azért kell, hogy ne az LS_RETURN=$? parancs hatalmas kimenete kerüljön az out.txt fájlba a tee parancs révén.2009-01-29-18:13 #2053596Korai volt az öröm.
Itt még van értéke a WROK változónak:
Code:$COMMAND 2>&1; WROK=$?De igy már nincs. //zárójel//
Code:($COMMAND 2>&1; WROK=$?)És igy sincs ,
Code:$COMMAND 2>&1; WROK=$? | tee out.txtés igy se.
Code:($COMMAND 2>&1; WROK=$?) | tee out.txt2009-01-29-20:22 #2053597Valóban. Mert ez egy al-shellt nyit. Ha más nem, akkor egy echo $? parancsot raksz a zárójelbe, ami szintén megy az out.txt-be. Vagy azt átküldöd az stderr-re, és akkor csak kinyomtatódik…
2009-04-20-17:31 #2053598Pipe után a változók értéke sajnos törlődik. Ill. az egész változó, amit esetleg újra lehet definiálni, de a nulláról indul. (Legcélszerűbb egy memóriában lévő file-ba kiküldeni… akkor gyors és meg is marad.)
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz