остановить чтение при чтении = 0 - PullRequest
0 голосов
/ 26 августа 2011

Я пытаюсь сделать что-то вроде этого:

  while[$read!="0"];

В этой программе

 #!/bin/sh
 i=0
 cont=0
 while[$read!="0"]; do
     read number
     cont=`expr $cont + $number`
     i++
 done
 cont=`expr $cont / $i -1`
 echo

Я хочу прекратить суммировать записи, когда даю 0 Тпй

Ответы [ 2 ]

2 голосов
/ 26 августа 2011

Переменная, в которую вы читаете, является $number, так что указывайте ее вместо $read в вашем цикле.

Пробелы значительны, поэтому обязательно включайте пробелы до, после и между всеми элементами в цикле. (Смущает, что вы должны , а не включать пробелы в оператор присваивания, как i=0. i = 0 неверно.)

Для правильной меры используйте двойные кавычки вокруг переменной. Это хорошая практика, так что если пользователь нажимает клавишу ввода, не набирая номер, ваш скрипт не преграждает пустую строку.

while [ "$number" != "0" ]; do

Кроме того, ваш i++ не прав. Это можно записать разными способами, самое простое из которых:

let i++
0 голосов
/ 26 августа 2011

В этом случае целесообразно использовать бесконечный цикл, поскольку вы знаете условие, на которое вы хотите (намекнуть) break выйти из цикла.Способ получения бесконечного цикла в sh: while true; do ...; done

Кроме того, read имеет опцию -p, которая позволяет получить приглашение (чтобы вы знали, что вас просят ввести): read -p "Enter a number: " number

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