[Bash] Minimum, maximum, średnia

Witam. Chciałbym dowiedzieć się co robię nie tak w programach, które napisałem i dlaczego.

Dostaję ze standardowego wejścia kilka liczb i muszę wypisać minimum, maksimum i średnią tych dwóch liczb.

Napisałem coś takiego:

#!/bin/bash


cat | sort -n | head -1

cat | sort -n | tail -1

i = head -1 + tail -1

sr = $i / 2

echo "$sr"

Niestety to nie działa, a ja nie mam pojęcia co jest nie tak - tymbardziej, że nie mogę znaleźć niczego w google.

Prosiłbym o jakieś rady.

Drugi cat czyta inną partię liczb ze standardowego wejścia.

Musisz je obrabiać jedną po drugiej lub najpierw zapisać do pliku.

Postanowiłem zapisać najpierw dane do pliku. Kod wygląda tak:

#!/bin/bash


cat | sort -n > temp.txt

$min = cat | head -1 < temp.txt

$max = cat | tail -1 < temp.txt

i = $min + $max

sr = $i / 2

echo "$min"

echo "$max"

echo "$sr"

Jednak to nadal nie chce poprawnie działać. Ponadto mam jeszcze jedno pytanie - jak zrobić, żeby wynik był obcinany do całkowitych w kierunku 0?

To co napisałęś to zdecydowanie nie jest bash, pomieszałeś tam trochę Perla/PHP. Kod może wyglądać tak

seq=$(cat|sort -n)

min=$(echo "$seq" | head -1)

max=$(echo "$seq" | tail -1)

avg=$(echo "($min+$max)/2" | bc -l)

echo $min

echo $max

echo $avg

Użycie pliku to raczej przesada. Równie dobrze można użyć jedynie awk do tego zadania.

Dziękuję za rozwiązanie. Przydało mi się.

rdrfear , proszę zapoznaj się z tą stroną oraz tym tematem, a następnie,używając przycisku image.php?album_id=20&image_id=4038