Hirdetés

2024. június 7., péntek

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Bash script

Hozzászólások

(#1) Briganti


Briganti
tag

Pliiiiz ne zarjatok, holnap nagy szuksegunk van ra, utanna igerem hogy en zarom, KOSZI :R

If debugging is a process of removing bug, then programming is a process of putting them in ...

(#2) Jester01 válasza Briganti (#1) üzenetére


Jester01
veterán

Jó hát biztos megvan rá az okod, de miért is nem volt jó a "nagy shell script topik" :F

Jester

(#3) jancsika.kis


jancsika.kis
csendes tag

adott egy allomany kov szerkezettel: nev keresztnev jegy(1<>10) csoportositsuk a szemelyeket jegy szerint es irjuk ki jol lathatoan
help!

(#4) jancsika.kis


jancsika.kis
csendes tag

ez eken de linuxban ... #!/bin/bash

(#5) Darth_Revan


Darth_Revan
veterán

Hi!
Tudna nekem mondani valaki egy egyszerű parancsot amivel meg tudom határozni (awk nélkül) egy xy könyvtáron belül levő fájlok átlag méretét egészre kerekítve? Thx :)

[ Szerkesztve ]

(#6) Jester01 válasza Darth_Revan (#5) üzenetére


Jester01
veterán

Például:

sum=0
count=0
for size in $(find "$1" -maxdepth 1 -type f -printf "%s ")
do
sum=$((sum + size))
count=$((count + 1))
done
echo "$sum bytes in $count files, averaging $((sum / count)) bytes per file"

MOD: persze nullával osztást illene ellenőrizni :B

[ Szerkesztve ]

Jester

(#7) TrakToros


TrakToros
csendes tag

hello!
Nekem is volna 1 gondom.

Megoldottam, hogy kimenetre kimenjen 4 db számjegy és azt kellene összeadni és átlagolni. Segítene valaki? Köszönöm.

A traktorosok,kombájnosok jó emberek:)

(#8) Jester01 válasza TrakToros (#7) üzenetére


Jester01
veterán

Hát ez ugyanaz a probléma mint fentebb :K

Jester

(#9) TrakToros válasza Jester01 (#8) üzenetére


TrakToros
csendes tag

csak az nekem nem igazán akar működni :(

Leírom inkább az egész feladatot:

Írjon bash scriptet, amely az első pozícionális paraméterben megadott könyvtárban meghatározza
az olvasható fájlok átlag méretét bájtban (egészre kerekitve). A paraméterül kapott könyvtár létezését ellenőrizze,
és térjen vissza hibás (2) kóddal ha nem létezik. Ha nincs megadva paraméter, írjon ki rövid ismertetőt a használatról
és térjen vissza hibás (1) kóddal. Az eredmény egész számot (átlag) írja ki egy log.txt nevű fájlba.
A feladat megoldása során a "test", "expr", "ls", "cat", "echo", "cut", és "find" segédprogramokat használja.

A feladat eleje hiányzik már csak, mert addig sikerült megcsinálnom, hogy kilistázza egy mappán belül levő fájlok méretet, jelenleg csak azok jelennek meg a kimeneten, már csak összegezni és átlagolni kellene őket. Bár nem tudom többi rész is jó-e, mert "test,"expr" és "cat" parancsokat még nem használtam, ebbe a maradék részben kellene használni ezt a 3at? :U

Ezt csináltam eddig:

if [ -z "$1" ]
then
echo "Nem adtál meg könyvtár nevet! Kérlek add meg!"
exit 2
fi

a=`find / -name $1 2>/dev/null`

if [ -d "$a" ];
then

for fn in $a

do
for i in "$fn"/*.*
do
b=`ls -ltr $i`
echo $b|cut -d " " -f 5


done
done

else
echo "Nem található ez a mappa!"
fi

[ Szerkesztve ]

A traktorosok,kombájnosok jó emberek:)

(#10) TrakToros válasza TrakToros (#9) üzenetére


TrakToros
csendes tag

már mind1, megcsináltam :B

A traktorosok,kombájnosok jó emberek:)

(#11) Darth_Revan válasza Jester01 (#6) üzenetére


Darth_Revan
veterán

Köszi, hasznos volt :R

(#12) Darth_Revan


Darth_Revan
veterán

Üdv

Azt hogy lehetne megcsinálni, hogy kilistázok több db html fájlt és azokban megszámolni, hogy hány db sor van a <body> és </body> között? Próbáltam volna grep-el de csak egy sort számnolt, a <body>-t :(

(#13) Jester01 válasza Darth_Revan (#12) üzenetére


Jester01
veterán

sed -n '/<body>/,/<\/body>/ p' | wc -l
Ez beleszámolja a body sorokat is, tehát kettővel több lesz. Már ha volt body egyáltalán.

Vagy awk-val:
awk '/<body>/,/<\/body>/ { count++ } END { if (count > 2) print count - 2; else print 0 } '

vagy shellben közvetlenül:

count=0
body=0
while read line
do
test "x$line" != "x${line/<body>/}" && body=1 && continue
test "x$line" != "x${line/<\/body>/}" && body=0 && continue
[[ $body == 1 ]] && count=$((count + 1))
done
echo $count

Egyik sem szereti ha egy sorban van a <body> és a </body> :) És ha nincs </body> akkor is "között"-nek minősül.

Jester

(#14) Darth_Revan válasza Jester01 (#13) üzenetére


Darth_Revan
veterán

awk-val csak 0-t ír ki :(

(#15) Darth_Revan válasza Darth_Revan (#14) üzenetére


Darth_Revan
veterán

sed-el meg csak az egyik body-t számolja bele :B

(#16) Jester01 válasza Darth_Revan (#14) üzenetére


Jester01
veterán

Tudsz adni egy példát?

Jester

(#17) kovacsakos91


kovacsakos91
csendes tag

Valaki esetleg tudna ajánlani valamiféle szakirodalmat vagy példatárat a témában?

(#18) Jim-Y


Jim-Y
veterán

Sziasztok

van egy változóm benne floatok, ezeket szeretném összeadni, már legalább 20-féleképp próbáltam de eddig semmi :/

"a" a változó
"sum"-ba kéne összeadogatni az "a"-ban lévő floatokat (pl 56.45,65.32 stb..)

for i in $a
do
`sum+=$i | bc`
done

megköszönném ha valaki tudna segíteni :R

(#19) Jim-Y válasza Jim-Y (#18) üzenetére


Jim-Y
veterán

ez sem jó :(

sum=$(echo "$sum+$i" | bc)

[ Szerkesztve ]

(#20) Jim-Y válasza Jim-Y (#19) üzenetére


Jim-Y
veterán

Ha esetleg érdekel valakit, végül felba***, szóval felidegesítettem magam, és hagytam a fenébe a bashscriptet, és perlben oldottam meg, lám ott tök triviálisan ennyi volt:

$sum=0.0;
foreach(@ssr){
$sum+=$_;
}

-.-

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Bash script
Copyright © 2000-2024 PROHARDVER Informatikai Kft.