LINUX.ORG.RU

История изменений

Исправление vodz, (текущая версия) :

Про $ вам уже сказали, но в принципе написано плохо. Во-первых, у вас не правильно посчитает количество файлов, если в именах будет перевод строки. Сообщение о правильности с первого раза не выведется, а потом, цикл никогда не завершится. Всё что одинаковое надо вносить внутрь цикла.

Короче, надо как-то так:

#!/usr/bin/env bash

declare -i m
for f in *.*; do
        m+=1
done

echo 'Hello! Guess the number of files in the current directory.'

while read -p 'Enter the number: ' n; do
    if [[ n -lt m ]]; then
        echo 'You are not right. Too low!'
    elif [[ n -gt m ]]; then
        echo 'You are not right. Too high!'
    else
        echo 'Congratiulations! You are right!'
        break
    fi
done

Исходная версия vodz, :

Про $ вам уже сказали, но в принципе написано плохо. Во-первых, у вас не правильно посчитает количество файлов, если в именах будет перевод строки. Сообщение о правильности с первого раза не выведется, а потом, цикл никогда не завершится. Всё что одинаковое надо вносить внутрь цикла.

Короче, надо как-то так:

#!/usr/bin/env bash

declare -i m
for f in *.*; do
        m+=1
done

echo $m

echo 'Hello! Guess the number of files in the current directory.'

while read -p 'Enter the number: ' n; do
    if [[ n -lt m ]]; then
        echo 'You are not right. Too low!'
    elif [[ n -gt m ]]; then
        echo 'You are not right. Too high!'
    else
        echo 'Congratiulations! You are right!'
        break
    fi
done