Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Помогите с shell  (Прочитано 606 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kolia88

  • Автор темы
  • Новичок
  • *
  • Сообщений: 34
    • Просмотр профиля
Помогите с shell
« : 29 Мая 2011, 23:05:25 »
(Нажмите, чтобы показать/скрыть)
запускать так ./(имя скрипта) (имя файла - у меня это текстовик в котором забито следующее:
(Нажмите, чтобы показать/скрыть)

тоесть в файле-параметре должно быть! (означает что это в задании так указано) на строке по 3 3х значных числа,
далее как вы видите в коде, надо сложить эти числа на строке 3х значные, получается число, всего их 3)
пример 444 + 444 +  444 = sum
как сделать общую сумму sum1 = (sum=444+444+444) + (sum=333+333+333) + (sum=222+222+222)
« Последнее редактирование: 29 Мая 2011, 23:08:25 от kolia88 »

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Помогите с shell
« Ответ #1 : 30 Мая 2011, 05:18:14 »
А где ржачная тема?

#!/bin/bash

sum_total=0
while read line
do
    sum_line=0
    pref=""
    for num in $line
    do
        echo -n "${pref}${num}"
        pref=" + "
        sum_line=$(($sum_line + $num))
    done
    echo " = "${sum_line}
    sum_total=$(($sum_total + $sum_line))
done <$1
echo "total = "${sum_total}

Учи математику а не баш. С первой у тебя еще может что-то получится со вторым однозначно ни чего не выйдет.

Тупо сложить все числа можно проще
sum=0
for num in `cat in.txt`
do
sum=$(($sum + $num))
done
echo $sum
« Последнее редактирование: 30 Мая 2011, 05:21:13 от Yurror »

andrey_p

  • Гость
Re: Помогите с shell
« Ответ #2 : 30 Мая 2011, 05:39:23 »
Поразительный прогресс. Хотя описание задачи и довольно сильно отличается от представленной попытки кода.

Судя по всему надо

temp=`tempfile`
while read a b c; do
  echo $(($a + $b +$c))
done <$1 >$temp
а потом что-то делать с $temp (сортировать и складывать).

 

Страница сгенерирована за 0.059 секунд. Запросов: 25.