Напечатать Usage и Прервать Скрипт при Незаданных Аргументах

Используйте следующую проверку в shell скриптах, чтобы:

1. проверить количество входящих аргументов

2. вывести сообщение об ошибке, если количество входящих аргументов некорректно

3. прервать shell скрипт со статусом ошибки

[ $# -eq 0 ] && { echo "Usage: $0 argument"; exit 1; }
Параметр Описание
$# переменная, содержащая количество аргументов, преданных скрипту
-eq 0 проверяем, равняется ли количество переданных аргументов нулю
$0 возвращает путь к shell скрипту

Пример Bash Скрипта

Следующий скрипт использует команду dig для поиска DNS-сервера доменного имени. Проверяемый домен должен передаваться скрипту в качестве аргумента.

#!/bin/bash
domain=$1
[ $# -eq 0 ] && { echo "Usage: $0 domain_name"; exit 1; }
dig NS $domain @8.8.8.8 +short

Пример выполнения скрипта, если аргумент не указан:

$ ./find_ns.sh
Usage: ./find_ns.sh domain_name

Пример работы скрипта при заданном аргументе:

$ ./find_ns.sh shellhacks.com
ns2.ukraine.com.ua.
ns3.ukraine.com.ua.
ns1.ukraine.com.ua.