> Написать shell-процедуру, которая:
> • Читает содержимое двух файлов, передаваемых в качестве первых параметров
> (в файлах в каждой строке представлено по одному целому числу);
> • Проверяет правильность формата содержимого файлов, при ошибках выводит соответствующие
> сообщения и завершает работу;
> • Суммирует числа из первого и второго файлов, расположенные в строках с
> одинаковым номером;
> • Сортирует полученные суммы по возрастанию и выводит их на экран
> с shell вообще не знакома,преподаватель не объяснил,как и что.Объясните пожалуйста как
> делать,если не пойму shell в течении месяца к экзамену не допустят(( не ходите девки в армию!
СКРИПТ:
[root@local 222]# cat ./calc2file
#!/bin/bash
if [ ${#*} -ne 2 ]
then
echo "Usage: $0 file1 file2"
exit
else
f1="$1"
f2="$2"
fi
#f1="1.good"
#f2="2.good"
n1=""
n2=""
r=""
f=""
echo "file '$f1'"
echo "====================="
i=0
while read n
do
c="${n//[[:digit:]]/}"
echo -ne "\t$(($i+1)): "
if [[ "${#c}" -eq 0 && "${#n}" -gt 0 ]]
then
echo -e "\t$n"
n1[i]="$n"
else
echo -e "\terror: '$n' is not number"
n1[i]='-'
f=1
fi
i=$(($i+1))
done < $f1
echo "---------------------"
echo "${#n1[*]}: ${n1[*]}"
echo "====================="
echo
echo "file '$f2'"
echo "====================="
i=0
while read n
do
c="${n//[[:digit:]]/}"
echo -ne "\t$(($i+1)): "
if [[ "${#c}" -eq 0 && "${#n}" -gt 0 ]]
then
echo -e "\t$n"
n2[i]="$n"
else
echo -e "\terror: '$n' is not number"
n2[i]='-'
f=1
fi
i=$(($i+1))
done < $f2
echo "---------------------"
echo "${#n2[*]}: ${n2[*]}"
echo "====================="
echo
echo "'$f1' + '$f2'"
echo "====================="
if [[ -n "${f}" || "${#n1[*]}" -ne "${#n2[*]}" ]]
then
echo -e "\terror: wrong source data"
else
n="${#n1[*]}"
for ((i=0; $i<$n ; i=$(($i+1))))
do
s[$i]=$((${n1[$i]}+${n2[$i]}))
echo "${n1[$i]}+${n2[$i]}=${s[$i]}"
done
fi
echo "====================="
echo
echo "sort"
echo "====================="
for n in ${s[*]}
do
echo "$n"
done | /bin/sort
echo "====================="
ТЕСТОВЫЕ ФАЙЛЫ:
[root@local 222]# cat ./1.good
50
40
30
20
10
[root@local 222]# cat ./2.good
1
2
3
4
5
[root@local 222]# cat ./1.bad
10
20
30z
40
50 1
60
70
[root@local 222]# cat ./2.bad
1
2
3
4z
5
ПРИМЕР РАБОТЫ:
[root@local 222]# ./calc2file
Usage: ./calc2file file1 file2
[root@local 222]# ./calc2file 1.bad 2.bad
file '1.bad'
=====================
1: 10
2: 20
3: error: '30z' is not number
4: error: '' is not number
5: error: '' is not number
6: error: '' is not number
7: 40
8: error: '50 1' is not number
9: 60
10: 70
11: error: '' is not number
12: error: '' is not number
13: error: '' is not number
---------------------
13: 10 20 - - - - 40 - 60 70 - - -
=====================
file '2.bad'
=====================
1: 1
2: 2
3: 3
4: error: '4z' is not number
5: 5
6: error: '' is not number
7: error: '' is not number
---------------------
7: 1 2 3 - 5 - -
=====================
'1.bad' + '2.bad'
=====================
error: wrong source data
=====================
sort
=====================
=====================
[root@local 222]# ./calc2file 1.good 2.good
file '1.good'
=====================
1: 50
2: 40
3: 30
4: 20
5: 10
---------------------
5: 50 40 30 20 10
=====================
file '2.good'
=====================
1: 1
2: 2
3: 3
4: 4
5: 5
---------------------
5: 1 2 3 4 5
=====================
'1.good' + '2.good'
=====================
50+1=51
40+2=42
30+3=33
20+4=24
10+5=15
=====================
sort
=====================
15
24
33
42
51
=====================
PS
brut force