Убедитесь, что в bash script есть как минимум два аргумента,
Я пытаюсь написать script, который имитирует cp, где есть исходный и целевой вход. как я могу подсчитать количество аргументов, заданных в командной строке
например
./myscript src dest
проверьте, что было указано как минимум 2 вещи.
Ответ 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.