Есть ли способ заставить bash-скрипт требовать набор параметров при его загрузке, и если нет, он автоматически выдаст echo на экран с инструкциями?

Глядя на этот пример скрипта с именем copy

user@localhost : user # ./copy  
Copy by SamplePerson  
Usage:  
copy [path/to/file] [path/to/destination]  
user@localhost : user #

Я хочу, чтобы он удостоверился, что если параметры не заданы, он автоматически просто выплюнет какой-то предопределенный текст в echo .

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

2 ответа2

2

Вы можете попробовать что-то вроде этого:

#!/usr/bin/bash

[ $# -eq 0 ] && cat <<XXX && exit 0;
Copy by SamplePerson
Usage:
copy [path/to/file] [path/to/destination]
XXX

echo Check args "$@"

Образец прогона:

# ./test.sh
Copy by SamplePerson
Usage:
copy [path/to/file] [path/to/destination]

# ./test.sh -x -y
Check args -x -y

Вы можете обрабатывать аргументы очень удобным способом, используя встроенную команду getopts . Или внешняя команда getopt(3) (особенно если вы используете длинные (например, --longopt) аргументы).

1

Я часто использую такую конструкцию:

case "$1" in
    'start')
        startProfile
        ;;

    'stop')
        stopProfile
        ;;

    'restart')
        stopProfile
        startProfile
        ;;

    *)
        echo "Usage $0 start|stop|restart <profile|application>"
esac

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .