Как проверить, есть ли более 5 входов для чтения в bash? - PullRequest
1 голос
/ 29 сентября 2019

Я хочу использовать не более 5 входов, если есть более 5 входов, разделенных пробелами, тогда он должен снова запросить ввод и отобразить сообщение «Вы ввели более 5 входов»

while true
do
echo "enter marks of 5 subjects"
read m1 m2 m3 m4 m5
if [ $m1 -le 100 ] && [ $m2 -le 100 ] && [ $m3 -le 100 ] && [ $m4 -le 100 ] && [ $m5 -le 100 ]
then
        break
else
 echo "marks cannot be more than 100"
fi
done

Ответы [ 2 ]

3 голосов
/ 29 сентября 2019

Я бы вместо этого прочитал в массив:

read -a m

Затем вы можете получить доступ к членам как

${m[0]} ${m[1]} ${m[2]}

и так далее ...

И выможно получить доступ к размеру массива с помощью

${#m[@]}

, который можно использовать при тестировании, если у вас слишком много (или слишком мало) входов.

2 голосов
/ 29 сентября 2019

Добавьте m6 к read m1 m2 m3 m4 m5 и проверьте, пусто m6 или нет.

if [[ "$m6" != "" ]]; then echo "too many arguments"; else echo "ok"; fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...