2013-11-28 6 views
2

Каков наилучший способ проанализировать параметры в командной строке оболочки, а затем проверить его?Параметры сценария оболочки

Например, bash someScript.sh -p <some_path> -o <some_other_param> -i (User forget to provide value).

Как анализировать все эти параметры и когда пользователь забывает вводить некоторые параметры или значение этого параметра показывает сообщение об ошибке и завершает выполнение сценария?

+0

Используйте 'getopts', конечно. Это описано в справочной странице bash. – Barmar

+0

Простое решение: http://stackoverflow.com/questions/20101929/bash-script-how-to-test-for-parameter-pairs –

ответ

4

Использовать или .

Есть много примеров на этом сайте, но вот еще один:

#!/usr/bin/env bash 

p_set=false 
o_set=false 
i_set=false 
while getopts p:o:i: OPT; do 
    case "${OPT}" in 
     p) 
      p_set=true 
      some_path=${OPTARG} 
      ;; 
     o) 
      o_set=true 
      some_other_param=${OPTARG} 
      ;; 
     i) 
      i_set=true 
      # Process ${OPTARG} or report error if it's not provided 
      ;; 
    esac 
done 

if ! $i_set ; then 
    echo "-i must be provided" 
fi 
+0

И как проверить, когда пользователь вводит параметр и забывает значение? – Procurares

+0

Я добавлял эту деталь, как вы прокомментировали. – Johnsyweb

+1

Это может произойти только в том случае, если пользователь вводит '-i' (например) в качестве последнего аргумента, когда вы ожидаете вариант. Тогда 'getopts' сообщит об ошибке. –

0

Поиск человека страницы getopts. Вы могли бы легко реализовать его.

0

Конечно, страница man всегда является хорошим ресурсом. Но есть и хорошие примеры в сети. При работе с getopts я всегда ссылаюсь на http://mywiki.wooledge.org/BashFAQ/035. Почти все, что вы хотели бы знать, можно найти там.

Смежные вопросы