Bash script - Szoftverfejlesztés fórum

üzenetek

hozzászólások


Briganti
(tag)

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


Jester01
(veterán)
Blog

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


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!


jancsika.kis
(csendes tag)

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


Darth_Revan
(veterán)
Blog

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 ]


Jester01
(veterán)
Blog

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 ]


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.


Jester01
(veterán)
Blog

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


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 ]


TrakToros
(csendes tag)

már mind1, megcsináltam :B


Darth_Revan
(veterán)
Blog

Köszi, hasznos volt :R


Darth_Revan
(veterán)
Blog

Ü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 :(


Jester01
(veterán)
Blog

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.


Darth_Revan
(veterán)
Blog

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


Darth_Revan
(veterán)
Blog

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


Jester01
(veterán)
Blog

Tudsz adni egy példát?


kovacsakos91
(csendes tag)

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


Jim-Y
(veterán)
Blog

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


Jim-Y
(veterán)
Blog

ez sem jó :(

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

[ Szerkesztve ]


Jim-Y
(veterán)
Blog

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+=$_;
}

-.-

üzenetek