Сумма в скрипте - PullRequest
       17

Сумма в скрипте

0 голосов
/ 06 января 2011

Почему я не могу создать сумму слов в этом скрипте? Я получаю результат примерно так:

 120+130

но это не 250 (как я и ожидал)! Есть ли причина?

#!/bin/bash

while [ -z "$count" ] ;
do
    echo -e "request :: please enter file name "
    echo -e "\n\tfile one : \c"
    read count

    itself=counter.sh

    countWords=`wc -w $count |cut -d ' ' -f 1`
    countLines=`wc -l $count |cut -d ' ' -f 1`
    countWords_=`wc -w $itself |cut -d ' ' -f 1`

    echo "Number of lines: " $countLines
    echo "Number of words: " $countWords
    echo "Number of words -script: " $countWords_

    echo "Number of words -total " $countWords+$countWords_  

done

if [ ! -e $count ] ; then
    echo -e "error :: file one $count doesn't exist. can't proceed."
    read empty
    exit 1
fi

Ответы [ 2 ]

6 голосов
/ 06 января 2011

echo "Количество слов-всего" $ CountWords + $ countWords_

Вы хотите это:

echo "Number of words -total $((countWords + countWords_))"

Редактировать

Вот некоторые оптимизации вашего скрипта.

  1. цикл while кажется бессмысленным поскольку count будет установлен для конечно внутри делает это 1-итерация цикла while.
  2. Ваша if проверка на наличие файл должен произойти, прежде чем вы когда-либо используйте этот файл.
  3. Вам не нужно жестко кодировать имя вашего скрипта в переменной itself, вы можете использовать $0 для этого
  4. Поскольку вы используете bash, я позволил себе отказаться от необходимости cut, используя подстановку процессов.

Вот пересмотренный скрипт:

#!/bin/bash

echo -e "request :: please enter file name "
echo -e "\n\tfile one : \c"
read count

if [ ! -e "$count" ] ; then
    echo "error :: file one $count doesn't exist. can't proceed."
    exit 1
fi

itself="$0"

read countWords _ < <(wc -w $count)
read countLines _ < <(wc -l $count)
read countWords_ _ < <(wc -w $itself)

echo "Number of lines: '$countLines'"
echo "Number of words: '$countWords'"
echo "Number of words -script: '$countWords_'"

echo "Number of words -total $((countWords + countWords_))"
1 голос
/ 06 января 2011

Один из способов это сделать:

echo `expr $countWords + $countWords_`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...