Подтвердить что ты не робот

Убедитесь, что в bash script есть как минимум два аргумента,

Я пытаюсь написать script, который имитирует cp, где есть исходный и целевой вход. как я могу подсчитать количество аргументов, заданных в командной строке

например

./myscript src dest

проверьте, что было указано как минимум 2 вещи.

4b9b3361

Ответ 1

Используйте специальную переменную $#. Его значение - количество аргументов. Поэтому, если у вас есть script, который содержит только:

echo $#

и выполните его следующим образом:

thatscript foo bar baz quux

Он выведет 4.

В вашем случае вы можете сделать что-то вроде:

if [ $# -ne 2 ]; then
    # TODO: print usage
    exit 1
fi

Ответ 2

Исходя из требования вопроса о том, что аргументы должны содержать "как минимум 2 вещи", я думаю, что было бы более точным проверить:

if (( $# < 2 )); then
    # TODO: print usage
    exit 1
fi

Использование арифметического расширения (( )) предотвратит это от удара exit 1 для любого значения, не равного 2.

Если вы используете if [ $# -ne 2 ];, это вызовет условие для любого количества аргументов, отличных от 2.