Подсчитайте аргументы - PullRequest
1 голос
/ 11 марта 2019

Я пишу эти команды:

#!/bin/bash
echo "Enter values a and b (separate with space)"
read a b
echo $#

И я хочу посчитать, сколько аргументов ввел пользователь.Я пытаюсь сосчитать с $#, но на выходе получается 0.

В чем проблема?Что я делаю не так?

Ответы [ 2 ]

7 голосов
/ 11 марта 2019

Вы можете использовать массив для чтения всей строки и подсчета количества слов:

read -p "Enter values (separate with space): " -ra arr

Enter values (separate with space): abc foo bar baz 123

Затем выведите нет слов:

echo "No of words: ${#arr[@]}"

No of words: 5
1 голос
/ 11 марта 2019

Вот как я, вероятно, сделал бы это, не слишком задумываясь об этом.Использовать фиктивную переменную c глупо, но я считаю, что массив bash еще более неудобен.

read -r a b c

if [[ $c ]]
then
        echo "To much arguments"
elif [[ $a && $b ]]
        echo "Correct - 2 arguments"
else
        echo "Not enough arguments"
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...